限制除第一级子级之外的JTree节点的添加

时间:2015-05-07 21:34:11

标签: java swing validation nodes jtree

我一直在尝试很多方法来限制我的代码只在第一级添加节点。这意味着用户只能将节点添加到JTree的第1级子节点。

在程序中添加节点可以通过两种方式完成 1.添加节点按钮 2.选择>右键单击>添加节点(在这里,如果选择了非第一级别的孩子,我想禁用此行为。虽然这是一个长镜头)

我需要一个允许在其他级别添加节点的验证。谢谢!

以下是工作代码:

// ==UserScript==
// @name        StackOverflowChat
// @namespace   deW1.net
// @include     http://chat.stackoverflow.com/rooms/*
// @require     http://code.jquery.com/jquery-1.11.3.min.js"
// @version     1
// @grant       none
// ==/UserScript==

$( document ).ready( function( )
{
    setInterval( function( )
    {
        $( "html , body" ).animate( 
        {
            scrollTop: $( document ).height( )
        } );
    } , 5000 );
} );

1 个答案:

答案 0 :(得分:2)

只需替换

tree.setComponentPopupMenu(popupMenu); 

使用:

tree.addMouseListener(new MouseAdapter() {
    @Override
        public void mousePressed(MouseEvent e) {
        if (SwingUtilities.isRightMouseButton(e)) {
            int row = tree.getClosestRowForLocation(e.getX(), e.getY());
            tree.setSelectionRow(row);
            if (tree.getSelectionPath().getPathCount() == 2) {
                popupMenu.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    }
});

并控制你的按钮添加:

addButton.setEnabled(false);
tree.addTreeSelectionListener(new TreeSelectionListener() {
    @Override
    public void valueChanged(TreeSelectionEvent e) {
        addButton.setEnabled((tree.getSelectionPath().getPathCount() == 2));
    }
});