【发布时间】:2014-04-01 01:05:15
【问题描述】:
我想获得第一列的值,因为我们可以在 Jtable 中使用 swing 来实现。下面是我的 jtable 代码和图像。
String Table_Clicked = jTable1.getModel().getValueAt(row, 0).toString();
正如您在图片中看到的,当我点击 Name 列值 8 时,它会给出第一列值,例如 8。但我选择名称列
那么如何使用 TableView Componenet 在 JavaFX 中实现这一点。
我从 TableView 中获取选定的值,如下图所示。
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
if(tableview.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = tableview.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("Selected value IS :" + val);
}
}
});
所以我希望在 tableview 中的第一列数据与我们在 Jtable 中获得的相同?那么如何获得该 NO 值.. 使用我上面的代码我在控制台中获得所选单元格 that is 8 print 的值.. 但我想获得第一列价值..帮助我彻底前进。
谢谢..
表格视图数据填充代码更新
PreparedStatement psd = (PreparedStatement) conn.prepareStatement("SELECT No,name FROM FieldMaster");
psd.execute();
ResultSet rs = psd.getResultSet();
for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
//We are using non property style for making dynamic table
final int j = i;
namecol = new TableColumn(rs.getMetaData().getColumnName(i+1));
namecol.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>()
{
@Override
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param)
{
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableview.getColumns().addAll(namecol);
System.out.println("Column ["+i+"] ");
}
while(rs.next())
{
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++)
{
//Iterate Column
row.add(rs.getString(i));
}
System.out.println("Row [1] added "+row );
data.add(row);
}
tableview.setItems(data);
conn.close();
【问题讨论】:
-
您的代码对我有用。我只是想知道
setCellSelectionEnabled(true)和setSelectionMode(SelectionMode.SINGLE)是否有所作为。 -
@brian:你这边的输出是什么?哪种代码适合您?
-
当我点击一个单元格时,你的监听器会给我单元格中的值。在您的示例中,这将是 8。请注意,您有一条蓝线突出显示该行中的所有单元格。如果您使用 tableView.setCellSelectionEnabled(true) ,则只会选择一个单元格。如果您不单击新行,侦听器将不起作用,但它会在单击的单元格中给出值。
-
@brian: 没有人,我想要基于第二列的选择第一列的值.. 选定的单元格也适用于我!!
-
好的,如果您总是想要第一列的值,这并不难。
Object val = tableView.getColumns().get(0).getCellData(newVal);
标签: java swing javafx javafx-2 tableview