14 Eylül 2018 Cuma

JavaFX TableView Sınıfı

Giriş
Şu satırı dahil ederiz.
import javafx.scene.control.TableView;
XML 
Örnek
Şöyle yaparız.
<VBox alignment="CENTER" layoutX="11.0" layoutY="12.0" prefWidth="345.0">
    <children>
        <TableView id="Table1" fx:id="Table1" styleClass="mytable"/>
        <TableView id="Table2" fx:id="Table2" styleClass="mytable"/>
        <TableView id="Table3" fx:id="Table3" styleClass="mytable"/>
        <TableView id="Table4" fx:id="Table4" styleClass="mytable"/>
    </children>
</VBox>
Sınıfımızda şöyle yaparız.
public class MyTablesController implements Initializable {

  @FXML
  private TableView<Pet> Table1;
  @FXML
  private TableView<Pet> Table2;
  @FXML
  private TableView<Pet> Table3;
  @FXML
  private TableView<Pet> Table4;

  private TableView<Pet>[] allTables;

  @Override
  public void initialize(URL location, ResourceBundle resources) {

    allTables = new TableView[4];
    allTables[0] = Table1;
    allTables[1] = Table2;
    allTables[2] = Table3;
    allTables[3] = Table4;

    for(TableView<Pet> table : allTables) {
      table.getColumns().add(createCol("ID", Pet::idProperty, 100));
      table.getColumns().add(createCol("Name", Pet::nameProperty, 140));
      table.getColumns().add(createCol("Owner", Pet::ownerProperty, 100));
      table.getItems().addAll(
                new Pet("1234", "spot", "joe"),
                new Pet("5432", "snowball", "bill"),
                new Pet("7612", "snoopy", "frank")
        );
    }
    setupTableRowDragEvents();
  }
    // ...
}
constructor
Şöyle yaparız.
TableView<Integer> tv = new TableView<> ();
getColumns metodu
Örnek
Yeni sütun eklemek için şöyle yaparız.
TableColumn<Integer, Integer> num = new TableColumn<> ("Number");
....
tv.getColumns ().add (num);
Örnek
Şöyle yaparız.
tv.getColumns().add(createCol("ID", Pet::idProperty, 100));
getItems metodu
Yeni satır eklemek için şöyle yaparız.
table.getItems().addAll(
                    new Pet("1234", "spot", "joe"),
                    new Pet("5432", "snowball", "bill"),
                    new Pet("7612", "snoopy", "frank")
            );
getSelectionModel metodu
Örnek
Şöyle yaparız.
Person person = tvPerson.getSelectionModel().getSelectedItem();
Örnek
Şöyle yaparız.
tv.getSelectionModel().selectedItemProperty().addListener((obs, oldPerson, newPerson)->{
  ...
});
setItems metodu
Eğer ObservableList kullanırsak her sütunu nesnenin property alanına bağlayabiliriz. Şöyle yaparız.
@FXML TableColumn<Person, String> tcFirstName, tcLastName;

tcFirstName.setCellValueFactory(new PropertyValueFactory("firstName"));
tcLastName.setCellValueFactory(new PropertyValueFactory("lastName"));
Örnek
Şöyle yaparız.
ObservableList<Integer> list = ...;
tv.setItems (list);
Örnek
Şöyle yaparız.
tvn.setItems(FXCollections.observableArrayList(getPersons()));

1 yorum:

  1. Bahadır TIRAŞ4 Mayıs 2020 14:52

    Eline emeğine sağlık çok güzel, açık ve anlaşılır olmuş :)

    YanıtlaSil