我正在尝试从JavaFX 2.0中的TableView中进行选择。 会发生什么是我需要获取您在tableview中选择的行的值我希望有人可以帮助我
将放在桌子上
我的意思是我想获取您选择的数据以及是否有办法处理事件以自动获取所选行
答案 0 :(得分:9)
您需要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);
}
});
答案 1 :(得分:6)
如果我理解正确,您想要检索当前在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
答案 2 :(得分:4)
我还不清楚你要做什么......
但是,获取所选行:
final Countries selectedCountry = tblCountries.getSelectionModel().getSelectedItem();
如果需要另一个窗格变得可见,或者需要显示另一个窗口,只需向onclicked属性添加一个事件处理程序等等?
这是你的意思吗?
答案 3 :(得分:3)
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获取所选值。
谢谢..