1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
| package test.tablecell;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.Scene;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import java.util.stream.IntStream;
public final class Main extends Application {
public static void main(final String... args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
// Record.
final var birthColumn1 = new TableColumn<LineRecord, Double>("Taux de natalité (record)");
birthColumn1.setMinWidth(100);
birthColumn1.setCellValueFactory(feature -> {
final double value = feature.getValue().birth;
return new SimpleObjectProperty<Double>(value);
});
final var suicideColumn1 = new TableColumn<LineRecord, Double>("Taux de suicide (record)");
suicideColumn1.setMinWidth(100);
suicideColumn1.setCellValueFactory(feature -> {
final double value = feature.getValue().suicide;
return new SimpleObjectProperty<Double>(value);
});
final var tableView1 = new TableView<LineRecord>();
tableView1.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
tableView1.getColumns().setAll(birthColumn1, suicideColumn1);
tableView1.setEditable(false);
// Bean Properties.
final var birthColumn2 = new TableColumn<LineBean, Double>("Taux de natalité (bean)");
birthColumn2.setMinWidth(100);
birthColumn2.setCellValueFactory(new PropertyValueFactory<LineBean, Double>("birth"));
final var suicideColumn2 = new TableColumn<LineBean, Double>("Taux de suicide (bean)");
suicideColumn2.setMinWidth(100);
suicideColumn2.setCellValueFactory(new PropertyValueFactory<LineBean, Double>("suicide"));
final var tableView2 = new TableView<LineBean>();
tableView2.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
tableView2.getColumns().setAll(birthColumn2, suicideColumn2);
tableView2.setEditable(false);
// FX Properties.
final var birthColumn3 = new TableColumn<LineFX, Double>("Taux de natalité (FX)");
birthColumn3.setMinWidth(100);
birthColumn3.setCellValueFactory(new PropertyValueFactory<LineFX, Double>("birth"));
final var suicideColumn3 = new TableColumn<LineFX, Double>("Taux de suicide (FX)");
suicideColumn3.setMinWidth(100);
suicideColumn3.setCellValueFactory(new PropertyValueFactory<LineFX, Double>("suicide"));
final var tableView3 = new TableView<LineFX>();
tableView3.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
tableView3.getColumns().setAll(birthColumn3, suicideColumn3);
tableView3.setEditable(false);
// Data.
IntStream.range(0, 100)
.forEach(index -> {
double birth = Math.random();
double suicide = Math.random();
final var record = new LineRecord(birth, suicide);
final var objBean = new LineBean(birth, suicide);
final var objFX = new LineFX(birth, suicide);
tableView1.getItems().add(record);
tableView2.getItems().add(objBean);
tableView3.getItems().add(objFX);
});
final var root = new SplitPane();
root.getItems().setAll(tableView1, tableView2, tableView3);
final var scene = new Scene(root);
stage.setTitle("Test");
stage.setWidth(1200);
stage.setHeight(600);
stage.setScene(scene);
stage.show();
Platform.runLater(() -> root.setDividerPositions(0.33, 0.66));
}
private record LineRecord(double birth, double suicide) {
}
public static class LineBean {
private double birth;
private double suicide;
public LineBean(double birth, double suicide) {
this.birth = birth;
this.suicide = suicide;
}
public double getBirth() {
return birth;
}
public void setBirth(final double value) {
birth = value;
}
public double getSuicide() {
return suicide;
}
public void setSuicide(final double value) {
suicide = value;
}
}
public static class LineFX {
private final DoubleProperty birthProperty = new SimpleDoubleProperty(this, "birth");
private final DoubleProperty suicideProperty = new SimpleDoubleProperty(this, "suicide");
public LineFX(double birth, double suicide) {
setBirth(birth);
setSuicide(suicide);
}
public double getBirth() {
return birthProperty.get();
}
public void setBirth(final double value) {
birthProperty.set(value);
}
public DoubleProperty birthProperty() {
return birthProperty;
}
public double getSuicide() {
return suicideProperty.get();
}
public void setSuicide(final double value) {
suicideProperty.set(value);
}
public DoubleProperty suicideProperty() {
return suicideProperty;
}
}
} |
Partager