JavaFX中的默认表模型 [英] Default Table Model in JavaFX
问题描述
我在尝试从JavaFX中的表视图中选择单行时遇到了一些问题。
I have encountered some problem when trying to select single row from table view in JavaFX.
以下是我使用数据库中的数据填充表格的方法:
Here is how I populate my table with data from database:
public void populateCategoryTable() {
data = FXCollections.observableArrayList();
try {
db.getConnection();
String sql = "SELECT * FROM sm_category";
ResultSet rs = null;
// Call readRequest to get the result
rs = db.readRequest(sql);
while (rs.next()) {
ObservableList<String> row = FXCollections.observableArrayList();
//All the rows are added here dynamically
row.add(rs.getString("categoryID"));
data.add(row);
}
viewCategory.setItems(data);
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
System.out.println("Error SQL!!!");
System.exit(0);
}
TableColumn id = new TableColumn("ID");
id.setVisible(false);
id.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(0).toString());
}
});
viewCategory.getColumns().addAll(id);
TableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //Error here
TableView.TableViewSelectionModel selectionModel = viewCategory.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
int row = tablePosition.getRow(); // yields the row that the currently selected cell is in
}
但是,当我尝试插入setSelectionMode代码时,出现错误。它告诉我找不到符号
符号:方法setSelectionMode(int)
location:class TableView
However, when I tried to insert the setSelectionMode code, there is an error. It tells me that cannot find symbol symbol: method setSelectionMode(int) location: class TableView
我记得当我在JavaSwing中执行表时,我使用它来为表设置模型:DefaultTableModel tableModel =(DefaultTableModel)jTable.getModel();
I remember when I did table in JavaSwing, I used this to set a model for table: DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();
但是,我不能这样做在javaFX中。有人可以帮我解决这个问题吗?
However, I cannot do this in javaFX. Anybody could help me fix this?
提前致谢。
推荐答案
tableview的默认选择模式是 SelectionMode.SINGLE
。要将其更改为多次尝试
The default selection mode of tableview is SelectionMode.SINGLE
. To change it to multiple try
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
> 我要做的是选择一个从表中获取行并获取索引
> what am I trying to do is select a single row from table and get the index
获取所选索引:
viewCategory.getSelectionModel().getSelectedIndex();
收听指数的变化:
viewCategory.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
System.out.println("index changed from " + oldValue + " to " + newValue);
}
});
这篇关于JavaFX中的默认表模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!