Как заставить JMenu иметь поведение Кнопки в JMenuBar

Я пытался заставить JMenu вести себя как JButton, но у меня есть некоторые проблемы, и надо надеяться кто-то здесь может помочь!

Я добавил MenuListener к объекту JMenu с этим, но я не могу добраться, всплывающее меню,/focus для отъезда, чтобы позволить мне правильно нажать JMenu, повторило времена для инициирования этой функции, и я надеялся, что кто-то мог сказать мне, что я делаю неправильно.Спасибо.

public void menuSelected(MenuEvent e)
        {
            ... // do stuff here code
            JMenu source = (JMenu)e.getSource();
            source.setSelected(false);
            source.setPopupMenuVisible(false);

        }
6
задан Kurru 16 March 2010 в 17:14
поделиться

3 ответа

Не совсем понимаю, о чем вы спрашиваете ...

Но JMenuBar наследуется от Контейнера - если вы предпочитаете добавить JButton в это, чем JMenu , вы можете просто вызвать -

JMenuBar menuBar = ....
JButton myButton = ....
menuBar.add(myButton);
8
ответ дан 10 December 2019 в 00:36
поделиться

Очень трудно определить, что вы пытаетесь здесь сделать. Но я не думаю, что вы правильно используете JMenu.

JMenu - это объект, представляющий меню. Он отделен от строки меню (JMenuBar) и от пункта меню (JMenuItem). JMenuBar обычно содержит несколько JMenus (File, Edit и т.д.), которые в свою очередь содержат несколько JMenuItems (New, Open, Close). JMenuItems - это то, что нажимается и "действует как кнопка" в меню.

Чтобы заставить пункт меню действовать как кнопка, просто добавьте его в меню. Например:

JMenu fileMenu = new JMenu("File");
JMenuItem newChoice = new JMenuItem("New");
newChoice.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        newHasBeenSelected();
    }
});
fileMenu.add(newChoice);

Если вы пытаетесь создать всплывающее меню, вам нужно использовать JPopupMenu вместо JMenu, и вам не нужен JMenuBar. Вот учебники Java по меню: http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

А вот документация по Java для JMenuBar, JMenu, JPopupMenu, и JMenuItem.

Если вы отредактируете свой вопрос и дадите более подробное объяснение того, что вы делаете, я смогу оказать более конкретную помощь.

0
ответ дан 10 December 2019 в 00:36
поделиться

Этот пример кода работает в eclipse, опять беспокоит, как вы его используете?

public class MyMenuFrame extends JFrame {


    public MyMenuFrame() throws HeadlessException {
        super("My Frame");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 300);
        Container pane = this.getContentPane();
        pane.setLayout(new BorderLayout());
        pane.add(new JLabel("Hi there"), BorderLayout.PAGE_START);
        this.setVisible(true);
        JMenuBar menubar = new JMenuBar();
        JMenu menu = new JMenu("File");

        menu.addMenuListener(new MenuListener() {

            @Override
            public void menuSelected(MenuEvent e) {
                System.out.println("a");

            }

            @Override
            public void menuDeselected(MenuEvent e) {
                System.out.println("a");

            }

            @Override
            public void menuCanceled(MenuEvent e) {
                System.out.println("a");

            }
        });
        menubar.add(menu);
        this.setJMenuBar(menubar );
    }

    public static void main(String[] args) {
        new MyMenuFrame();
    }
}
1
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: