我有一个带有一些行的TableView
。用户可以选择任何行,但是当他单击空行或舞台
上的任何地方时,我想清除他当前选择的TableView
。
您可以存储最后选定的行,并使用现场的鼠标侦听器检查单击是否在选定的行或其他地方:
ObjectProperty<TableRow<MyRowClass>> lastSelectedRow = new SimpleObjectProperty<>();
myTableView.setRowFactory(tableView -> {
TableRow<MyRowClass> row = new TableRow<MyRowClass>();
row.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
lastSelectedRow.set(row);
}
});
return row;
});
stage.getScene().addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (lastSelectedRow.get() != null) {
Bounds boundsOfSelectedRow = lastSelectedRow.get().localToScene(lastSelectedRow.get().getLayoutBounds());
if (boundsOfSelectedRow.contains(event.getSceneX(), event.getSceneY()) == false) {
myTableView.getSelectionModel().clearSelection();
}
}
}
});
如果单击是在空行上或表视图
之外的任何位置,则可以向场景
添加事件过滤器,该过滤器使用表视图
的选择模型来清除选择:
scene.addEventFilter(MouseEvent.MOUSE_CLICKED, evt -> {
Node source = evt.getPickResult().getIntersectedNode();
// move up through the node hierarchy until a TableRow or scene root is found
while (source != null && !(source instanceof TableRow)) {
source = source.getParent();
}
// clear selection on click anywhere but on a filled row
if (source == null || (source instanceof TableRow && ((TableRow) source).isEmpty())) {
tableView.getSelectionModel().clearSelection();
}
});
我有一个如下定义的表视图 当用户单击时,我使用单击的项目详细信息重新加载表。在我重新加载之前,我对表项调用清除 现在,当我单击另一个项目并尝试重新加载表格时,它看起来像下面这样。这是非常奇怪的,因为应该只有一行,但行的大小是一样的,就像从以前的点击,其余的行是空的,除了图标。当我点击图标时,没有任何反应。任何人以前都面临过这种情况。有人知道这是什么原因吗? 我的工具定义如下。它们只是2 的
问题内容: 我试图让表单元格在创建新行时显示字符串。但是所有行都是空的。有人知道我在做什么错吗?这是主要的类:包应用程序; 这是正常的并且可以正常工作,所以我认为您不必为此担心。 这是控制器类。我认为问题可能出在哪里。 这也是tableviewer所需的表类 你们知道什么地方可能出错,或者建议我如何只添加tableviewer,使其代码仍可与SceneBuilder中的其余fxml文件一起使用?
我试图在GridView中显示字符串的动态列表。每个单词都可以点击,可以选择或取消选择。我正在附加Flipboard的屏幕截图,因为我想要完全相同的功能。 请帮我找出在我的应用程序中实现的相同功能。
问题内容: 我现在正在寻找几天以寻求ListView中可点击项的解决方案。 首先,我遇到了这个问题: **developer.android.com/resources/articles/touch-mode.html** ,发现它没有“正常”的onListItemClick()行为。 然后我遇到了 这段代码 :http : //www.androidsnippets.org/snippets/1
我有一个listView,它充满了字符串的数组列表,我想让它可点击...但我无法识别哪个项目被点击了 我做了这个,但没用! 有办法知道被点击的字符串吗?如果没有,是否有办法知道被点击项目的位置?
问题内容: 我有一个程序,提示用户从四个选项(从一组RadioButtons中)中选择一个选项。 用户做出选择后,他/她单击一个按钮,然后收到一条消息。关闭窗口后,用户将返回第一个窗口,并根据需要进行新的选择。我想要的是使单选按钮完全清楚。 到目前为止,我已经实现了一种方法,实际上可以取消选择单选按钮并且可以很好地工作(清除变量的值),而没有做的是从先前选择的单选按钮中删除黑点。另一方面,取消选中