我有一个附加了 SelectionListener 的 JTree。当我单击树中的节点时,侦听器运行正常并正确通知我。
但是,节点在选择时并不总是突出显示。事实上,它需要两次点击才能让节点上的可视“蓝框”出现。
为什么以下代码需要两次单击才能显示选择?
JTree的创建
JTree tree = new JTree();
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setDragEnabled(true);
tree.setDropMode(DropMode.ON);
tree.expandRow(0);
tree.setModel(model.getActiveFilterModel());
添加监听器
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent event) {
JTree tree = (JTree) event.getSource();
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (selectedNode != null) {
model.setSelectedFilter((Filter) selectedNode.getUserObject());
}
}
});
编辑:
我想补充一点,它似乎只有在我第二次在树上调用 .setModel 时才会发生。