我正在尝试从 JavaFX 2.0 中的 TableView 中获取选择。发生的事情是我需要获取您在 tableview 中选择的行的值我希望有人可以帮助我
就像放在桌子上一样
我的意思是我想获取您选择的数据,如果有任何方法可以处理事件以自动获取选定的行
你需要ChangeListener和Clipboard来完成你的任务:)
示例代码:
Clipboard clipboard = Clipboard.getSystemClipboard();
// add listner to your tableview selecteditemproperty
userTable.getSelectionModel().selectedItemProperty().addListener( new ChangeListener() {
// this method will be called whenever user selected row
@override
public void chnaged(ObservableValue observale, Object oldValue,Object newValue) {
UserClass selectedUser = (UserClass)newValue;
ClipboardContent content = new ClipboardContent();
// make sure you override toString in UserClass
content.putString(selectedUser.toString());
clipboard.setContent(content);
}
});
如果我理解正确,您想检索当前在 TableView 中选择的单元格的行号。
为此,请请求 TableView 的 SelectionModel:
// tv is of type TableView
TableView.TableViewSelectionModel selectionModel = tv.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
我仍然不清楚您要做什么...
但是,获取选定的行:
final Countries selectedCountry = tblCountries.getSelectionModel().getSelectedItem();
如果需要另一个窗格变得可见或另一个窗口显示只需将事件处理程序添加到 onclicked 属性等?
是这个意思吗?
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
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" + val);
}
}
});
使用此代码,您可以从 JAVAFX TABLEVIEW Cell 中获取选定的值。
谢谢..