禁用JTree中的标准鼠标行为

时间:2012-12-11 15:43:32

标签: java swing awt jtree mouselistener

我有一个JTree,在特定情况下我想将其切换到“无用户输入模式”。在此模式下,用户应该无法更改树的选择。但是,当前选择应保持不变,并且仍应能够以编程方式进行更改。

我尝试设置tree.setFocusable(false) - >用户仍然可以更改选择

我构建了一个消耗点击事件的MouseListener - >用户仍然可以更改选择

我试过tree.setSelectionModel(null) - >没有选择可见

原则上我可以tree.setEnabled(false)然后树会变成灰色和丑陋。

关于如何阻止用户更改选择的任何想法,或者我如何在禁用状态下正常绘制JTree

1 个答案:

答案 0 :(得分:1)

我想我会做那样的事情:

    tree.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent arg0) {
            TreePath path = ... // The path of the node you want to be selected 
            tree.setSelectionPath(path);
        }
    });

当选择更改时,您再次选择所需的节点。