gpt4 book ai didi

java - 两个 tableView 和一个使用 JavaFx 的选择

转载 作者:行者123 更新时间:2023-11-29 03:37:02 25 4
gpt4 key购买 nike

我的应用程序中有两个 tableView,我希望每次只启用一个。

例如我有 tableView1 和 tableView2

如果 tableView2 被选中(或聚焦),则 tableView1 清除选择。

我已经尝试了一些代码,但它们似乎不起作用。

mainTableView2.focusModelProperty().addListener(new ChangeListener() {

@Override
public void changed(ObservableValue ov, Object t, Object t1) {
mainTableView1.getSelectionModel().clearSelection();
}
});

最佳答案

在此示例中,您错误地分配了监听器。你写过:

mainTableView2.focusModelProperty().addListener(new ChangeListener() {

@Override
public void changed(ObservableValue ov, Object t, Object t1) {
mainTableView1.getSelectionModel().clearSelection();
}
});

这意味着 TableView 有一个改变焦点项目或单元格的策略,它允许以编程方式改变焦点、跟踪焦点项目等...然后你在改变它时添加监听器策略,实际上通常不会改变。如果您想跟踪表格的焦点项目,您应该在该焦点模型的属性上添加监听器。

你想要的应该是这样的:

mainTableView2.focusedProperty().addListener(new ChangeListener() {

@Override
public void changed(ObservableValue ov, Object t, Object t1) {
mainTableView1.getSelectionModel().clearSelection();
}
});

此属性(focused 属性)响应控件的聚焦状态(蓝色边框 - 里海风格,红色边框适合摩德纳风格)。

但是,在评估期间,我发现存在错误(请参阅评论),因此我建议针对该问题采取解决方法:

    scene.focusOwnerProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> ov, Node t, Node t1) {

if (t1 == table2) {
table1.getSelectionModel().clearSelection();
}
if (t1 == table1) {
table2.getSelectionModel().clearSelection();
}
}
});

粘贴任何类似的逻辑..

关于java - 两个 tableView 和一个使用 JavaFx 的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14965521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com