All Classes Namespaces Files Functions Variables
StringMatrixExampleSub.java
Go to the documentation of this file.
1 package tableViewExamples;
2 
3 
4 import java.util.Arrays;
5 
6 import javafx.application.Application;
7 import javafx.beans.property.SimpleStringProperty;
8 import javafx.collections.FXCollections;
9 import javafx.collections.ObservableList;
10 import javafx.scene.Scene;
11 import javafx.scene.control.TableColumn;
12 import javafx.scene.control.TableView;
13 import javafx.scene.control.cell.TextFieldTableCell;
14 import javafx.scene.layout.StackPane;
15 import javafx.stage.Stage;
16 
17 /**
18  * Esimerkki 2-ulotteisen merkkijonotaulukon näyttämisestä
19  * JavaFX:n TableViewssä aliohjelman avulla.
20  * Muokkaukset eivät tässä esimerkissä muuta itse taulukkoa
21  * @author vesal
22  * @version 24.12.2015
23  *
24  */
25 public class StringMatrixExampleSub extends Application {
26 
27  /**
28  * Käynistetään esimerkkiohjelma
29  * @param args ei käytössä
30  */
31  public static void main(String[] args) {
32  launch(args);
33  }
34 
35 
36  @Override
37  public void start(Stage primaryStage) {
38  StackPane root = new StackPane();
39  String[] otsikot = {"ala", "aloitusvuosi", "h/vko"};
40  String[][] tiedot = {
41  {"kalastus", "1955", "20"},
42  {"laiskottelu", "1950", "20"},
43  {"työn pakoilu", "1952", "40"}
44  };
45 
46  TableView<String[]> tableTiedot = new TableView<>();
47 
48  tableTiedot.setEditable(true);
49 
50  root.getChildren().add(tableTiedot);
51  primaryStage.setScene(new Scene(root, 300, 250));
52  primaryStage.show();
53 
54  NaytaTalukossa(tableTiedot, otsikot, tiedot);
55  }
56 
57 
58  /**
59  * Lisätään TableView taulkkoon otsikot-mukaisesti sarakkeet ja
60  * sisältö talukosta tiedot
61  * @param tableTiedot TableView johon tiedot lisätään
62  * @param otsikot sarakkaiden määrä ja otsikot tästä
63  * @param tiedot taulukon tietosisältö tästä
64  */
65  public static void NaytaTalukossa(TableView<String[]> tableTiedot, String[] otsikot, String[][] tiedot) {
66  ObservableList<String[]> data = FXCollections.observableArrayList();
67  data.addAll(Arrays.asList(tiedot));
68  for (int i = 0; i < otsikot.length; i++) {
69  TableColumn<String[], String> tc = new TableColumn<String[], String>(otsikot[i]);
70  final int sarakeNro = i;
71 
72  tc.setCellValueFactory((rivi) -> new SimpleStringProperty(rivi.getValue()[sarakeNro]));
73 
74  tc.setPrefWidth(90);
75  tableTiedot.getColumns().add(tc);
76  tc.setCellFactory(TextFieldTableCell.forTableColumn());
77 
78  tc.setOnEditCommit( (t) -> {
79  String[] rivi = t.getTableView().getItems().get(t.getTablePosition().getRow());
80  rivi[sarakeNro] = t.getNewValue();
81  }
82  );
83  }
84  tableTiedot.setItems(data);
85  }
86 }