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
| public class Main extends Application {
@Override
public void start(Stage primaryStage) {
final Properties properties = System.getProperties();
final List<String> keys = new ArrayList(properties.stringPropertyNames());
Collections.sort(keys);
final TableView<String> tableView = new TableView();
tableView.getItems().setAll(keys);
keys.clear();
final TableColumn<String, String> keyColumn = new TableColumn("Key");
keyColumn.setCellValueFactory((TableColumn.CellDataFeatures<String, String> p) -> {
final String key = p.getValue();
return new SimpleStringProperty(key);
});
final TableColumn<String, String> valueColumn = new TableColumn("Value");
valueColumn.setCellValueFactory((TableColumn.CellDataFeatures<String, String> p) -> {
final String key = p.getValue();
final String value = properties.getProperty(key);
return new SimpleStringProperty(value);
});
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
tableView.getColumns().setAll(keyColumn, valueColumn);
tableView.setRowFactory((TableView<String> tv) -> {
final TableRow<String> row = new TableRow<String>() {
final ContextMenu rowMenu = new ContextMenu();
{
final MenuItem editItem = new MenuItem("Edit");
editItem.setId("rpt01");
editItem.setOnAction((ActionEvent event) -> {
final String key = getItem();
System.out.printf("%%%%%% %s - %s", editItem.getId(), key).println();
});
MenuItem removeItem = new MenuItem("Delete");
removeItem.setId("rpt02");
removeItem.setOnAction((ActionEvent event) -> {
final String key = getItem();
System.out.printf("%%%%%% %s - %s", removeItem.getId(), key).println();
});
rowMenu.getItems().addAll(editItem, removeItem);
contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(itemProperty()))
.then(rowMenu)
.otherwise((ContextMenu) null));
setOnMouseClicked((MouseEvent e) -> rowMenu.show(tableView, e.getScreenX(), e.getScreenY()));
}
@Override
protected void updateItem(String t, boolean bln) {
super.updateItem(t, bln);
}
};
return row;
});
final StackPane root = new StackPane();
root.getChildren().add(tableView);
final Scene scene = new Scene(root, 600, 600);
primaryStage.setTitle("Test TableView ContextMenu");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
} |
Partager