Отключить всплывающее меню на JTable - PullRequest
1 голос
/ 10 февраля 2011

Я создаю такую ​​таблицу с помощью всплывающего меню

JTable table = new Table()

table.addMouseListener( new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        if (e.isPopupTrigger())
        {
            JTable source = (JTable)e.getSource();
            int row = source.rowAtPoint( e.getPoint() );
            int column = source.columnAtPoint( e.getPoint() );

            if (! source.isRowSelected(row))
                source.changeSelection(row, column, false, false);

            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
});

Я хочу иметь возможность включить / отключить это меню с помощью вызова, я пробовал это:

таблица.setEnabled (false)

, но меню все еще всплывает .. Какой вызов мне следует сделать?

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Вы можете иметь логическое значение внутри класса, создающего таблицу с именем tableMenuEnabled.Вы должны иметь возможность установить для tableMenuEnabled значение true или false, если вы планировали вызов метода table.setEnabled (false).Оттуда ваш код изменится на:

table.addMouseListener( new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        if (tableMenuEnabled && e.isPopupTrigger())
        {
            JTable source = (JTable)e.getSource();
            int row = source.rowAtPoint( e.getPoint() );
            int column = source.columnAtPoint( e.getPoint() );

            if (! source.isRowSelected(row))
                source.changeSelection(row, column, false, false);

            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
});
1 голос
/ 10 февраля 2011

Ну, вам, вероятно, придется удалить его как слушателя.Итак, сохраните его как переменную-член в вашем классе, например:

private MouseAdapter adapt;

Ваш другой код станет:

adapt = new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        if (e.isPopupTrigger())
        {
            JTable source = (JTable)e.getSource();
            int row = source.rowAtPoint( e.getPoint() );
            int column = source.columnAtPoint( e.getPoint() );

            if (! source.isRowSelected(row))
                source.changeSelection(row, column, false, false);

            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
});

table.addMouseListener(adapt);

тогда ваш вызов будет выглядеть так:

public void disableTableMenu() {
    table.removeMouseListener(adapt);
}

также, чтобы добавить его обратно, вы можете получить следующее:

public void enableTableMenu() {
    table.addMouseListener(adapt);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...