1
我有一個附帶SelectionListener的JTree。監聽器運行正常,並且每當我單擊樹中的一個節點時都會正確通知我。爲什麼需要兩次點擊來突出顯示我的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。