Note that there are some explanatory texts on larger screens.

plurals
  1. POAutomatically create TableView columns based on data class info
    primarykey
    data
    text
    <p>I have this editable JavaFX table for editing data:</p> <pre><code>public class DataTable { public void initTable(Stage primaryStage, Group root, Scene scene) { tableView.setEditable(true); Callback&lt;TableColumn, TableCell&gt; cellFactory = new Callback&lt;TableColumn, TableCell&gt;() { @Override public TableCell call(TableColumn p) { return new EditingCell(); } }; TableColumn columnMonth = new TableColumn("Month"); columnMonth.setCellValueFactory( new PropertyValueFactory&lt;Record, String&gt;("fieldMonth")); TableColumn columnValue = new TableColumn("Value"); columnValue.setCellValueFactory( new PropertyValueFactory&lt;Record, Double&gt;("fieldValue")); //--- Add for Editable Cell of Value field, in Double columnValue.setCellFactory(cellFactory); columnValue.setOnEditCommit( new EventHandler&lt;TableColumn.CellEditEvent&lt;Record, Double&gt;&gt;() { @Override public void handle(TableColumn.CellEditEvent&lt;Record, Double&gt; t) { ((Record) t.getTableView().getItems().get( t.getTablePosition().getRow())).setFieldValue(t.getNewValue()); } }); //--- tableView.setItems(dataList); tableView.getColumns().addAll(columnMonth, columnValue); VBox vBox = new VBox(); vBox.setSpacing(10); vBox.getChildren().add(tableView); vBox.setLayoutX(410); vBox.setLayoutY(34); root.getChildren().add(vBox); } public class Record { private SimpleStringProperty fieldMonth; private SimpleDoubleProperty fieldValue; Record(String fMonth, double fValue) { this.fieldMonth = new SimpleStringProperty(fMonth); this.fieldValue = new SimpleDoubleProperty(fValue); } public String getFieldMonth() { return fieldMonth.get(); } public double getFieldValue() { return fieldValue.get(); } public void setFieldMonth(String fMonth) { fieldMonth.set(fMonth); } public void setFieldValue(Double fValue) { fieldValue.set(fValue); } } private TableView&lt;Record&gt; tableView = new TableView&lt;&gt;(); private ObservableList&lt;Record&gt; dataList = FXCollections.observableArrayList( new Record("January", 100), new Record("February", 200), new Record("March", 50), new Record("April", 75), new Record("May", 110), new Record("June", 300), new Record("July", 111), new Record("August", 30), new Record("September", 75), new Record("October", 55), new Record("November", 225), new Record("December", 99)); class EditingCell extends TableCell&lt;Record, Double&gt; { private TextField textField; public EditingCell() { } @Override public void startEdit() { super.startEdit(); if (textField == null) { createTextField(); } setGraphic(textField); setContentDisplay(ContentDisplay.GRAPHIC_ONLY); textField.selectAll(); } @Override public void cancelEdit() { super.cancelEdit(); setText(String.valueOf(getItem())); setContentDisplay(ContentDisplay.TEXT_ONLY); } @Override public void updateItem(Double item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); setGraphic(null); } else { if (isEditing()) { if (textField != null) { textField.setText(getString()); } setGraphic(textField); setContentDisplay(ContentDisplay.GRAPHIC_ONLY); } else { setText(getString()); setContentDisplay(ContentDisplay.TEXT_ONLY); } } } private void createTextField() { textField = new TextField(getString()); textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2); textField.setOnKeyPressed(new EventHandler&lt;KeyEvent&gt;() { @Override public void handle(KeyEvent t) { if (t.getCode() == KeyCode.ENTER) { commitEdit(Double.parseDouble(textField.getText())); } else if (t.getCode() == KeyCode.ESCAPE) { cancelEdit(); } } }); } private String getString() { return getItem() == null ? "" : getItem().toString(); } } } </code></pre> <p>I have to create small program which can display data from database tables and edit the tables. I came to this problem when I click on a table I have to generate dynamic table view from JPA object, so I have every time one table but with different columns. Can I somehow generate every time table with the data from JPA and update columns automatically based on the case?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload