jMenuItem 没有出现

我刚刚开始使用 Java Swing,但遇到了一个问题。我尝试做一个简单的 menuBar 和 menuItem 'Exit',但在将按钮链接到 menuItem 出现的操作之前,现在我已经将按钮链接到 System.exit(0) 操作它消失了。帮助?代码如下:


在MainPanel中(不包括 swing 自动生成的代码):


public void init() {

    initComponents();

    initActions();  


    setLocationRelativeTo(null); 

    pack();

    setVisible(true);

}


private void initActions() {

    this.menuItemExit.setAction(Application.getInstance().getPanelControl().getActionExit());


}

在面板控制中:


public class PanelControl {


    private Action actionExit;



    public Action getActionExit() {

        return actionExit;

    }




public class ActionExit extends AbstractAction{


    public ActionExit(){

        putValue(Action.NAME, "Exit");

        putValue(Action.SHORT_DESCRIPTION, "Exit from the application");

        putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl e"));

        putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E);

    }


    @Override

    public void actionPerformed(ActionEvent e) {

        System.exit(0);

    }


}

在应用程序中:


private void init() {

    viewMainPanel = new MainPanel();

    controlPanel = new ControlPanel();

    viewMainPanel.init();


}

我认为问题出在此处,但我不知道在哪里。有什么帮助吗?(还有其他代码,但我只是放了更相关的部分,我也从意大利语翻译了代码,所以如果有任何问题或一些名称不匹配,我很抱歉)


绝地无双
浏览 224回答 2
2回答

DIEA

private Action actionExit;public Action getActionExit() {    return actionExit;}您的actionExit变量为空。您的代码中没有任何地方创建ActionExit类的实例。你需要的地方:actionExit = new ActionExit();您的设计似乎有点复杂,我不知道为什么您有一个面板只是为了创建 ActionExit 类的实例。我建议您只在主类中创建 ActionExit 实例并摆脱 PanelControl 类。与其使用 IDE 生成令人困惑的代码,不如考虑学习如何自己编写代码,以便更好地构建类。阅读 Swing 教程中有关如何使用菜单的部分,以获取帮助您入门的工作示例。

慕婉清6462132

必须将菜单项添加到 Native Java Swing 组件中。您必须将其添加到 JFrame。您不能将 MenuItem 添加到面板。任何 Java Swing 应用程序中的父“根”容器都是“本机”和 JFrame。使用您选择的外观和感觉将该容器中的所有其他内容“绘制”到矩形中。然后你使用你的 TAbstractAction 项目创建一个 MenuItem。该对象可用于创建 JButton、JMenuItem 或 ToolBar 按钮。在代码中保留对 TAbstractAction 的引用,您可以启用/禁用该对象,它实现了一个“可观察”模式,它将启用/禁用您用来构建的所有 UI 控件。我实际上编写了一个 Java Swing 框架来执行 Java 应用程序。它曾经在 Sun Open Source 网站上。如果你希望我可以把它放在 GitLab 上供你玩。Java Swing 很好,但 JavaFX 应该是 JVM 上 UI 的长期目标。在您的 JFrame 对象中,您需要执行以下操作: _menuBar = new JMenuBar();  // add controls to the frame  setJMenuBar(_menuBar);然后您需要将您的“exitMenuItem”添加到您的_MenuBar 控件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java