繁体   English   中英

单击鼠标后,JMenu仍保持选中状态

[英]JMenu remains selected after a mouse click

我有一个带有菜单栏的JApplet 问题是无论何时单击菜单,无论结果如何,除非我单击屏幕上的其他位置,否则它将保持选中状态。

这是描述该场景的一小段示例代码:

public class Frame extends JApplet{

    public static String title = "Tower Defence Game";
    JMenuBar menubar;
    JMenu menuCreateMap;

    @Override
    public void init() {

        menubar = new JMenuBar();

        menuCreateMap = new JMenu("Create Map");

        menuCreateMap.addMenuListener(new MenuHandler(new Frame()));  

        menubar.add(menuCreateMap);

        setJMenuBar(menubar);

        this.setPreferredSize(new Dimension(getHeight(), getWidth())); 
        setVisible(true);           
    }
}

MenuHandler

public class MenuHandler extends Thread implements MenuListener {

    Frame frame;
    JMenu myMenu; 
    MenuHandler menuHandler;

    MenuHandler() {}

    MenuHandler(Frame frame) {
        this.frame = frame;     
        menuHandler = new MenuHandler();
    }

    @Override
    public void menuSelected(MenuEvent e) {

        myMenu = (JMenu) e.getSource();

        String selectedOption = myMenu.getText();

        if(selectedOption.equalsIgnoreCase("Create Map")) {

            menuHandler.start();
        }

    }

    public void run() {
        JLabel label = new JLabel("Hello World");
        label.setText("Hello");
        label.setBounds(100, 100, 100, 100);
        this.frame.add(label);
    }   
}

该代码将引发异常,但您会看到菜单将保持选中状态。

如何解决这个问题?

如果要通过JMenuBar中的JMenu组件触发事件,则应尝试更改它,并将JBUtton添加到JMenuBar而不是JMenu中。 因为不应该以这种方式使用JMenu。 但是,如果在该JMenu中有一个JMenuItem,则可以触发一个事件并适当地处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM