Как запретить JMenuItem закрывать Меню при нажатии на JMenuItem - PullRequest
3 голосов
/ 08 февраля 2012

Как запретить JMenuItem закрывать меню при нажатии JMenuItem?

JMenuItem включен.

Так что это сценарий, у меня есть 3 JMenuItems:

JMenuItem: A, B, C;

C отображает целое число X.

Aи B используются для увеличения или уменьшения X на значение 1. Если щелкнуть A или B, по умолчанию характер состоит в том, что меню закрывается при щелчке.Я хочу иметь возможность многократно нажимать кнопку A или B, чтобы меню оставалось открытым, и выполнять соответствующие «действия» при каждом нажатии.

Спасибо!

1 Ответ

3 голосов
/ 08 февраля 2012

Во-первых, использование меню для этого может быть неправильным подходом. JSpinner кажется более подходящим. Однако, чтобы сделать это с JMenuItem, вы можете создать подкласс MenuItemUI используемого вами LookAndFeel и переопределить метод doClick(...), чтобы clearSelectionPath() не вызывался, что закрывает меню, когда элемент щелкают.

Например, если вы используете мотив LookAndFeel, вы можете сделать это:

menuItem.setUI(new MotifMenuItemUI() {
    @Override
    protected void doClick(MenuSelectionManager msm) {
        menuItem.doClick(0);
    }
});

Сам я никогда не пробовал, но думаю, что это сработает.

...