首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jMenuItem没有出现

jMenuItem没有出现
EN

Stack Overflow用户
提问于 2018-11-13 17:05:36
回答 2查看 22关注 0票数 0

我刚刚开始使用Java,我有一个问题。我试着做一个简单的menuBar和一个menuItem 'Exit',但是在将按钮链接到menuItem显示的动作之前,既然我已经将按钮链接到System.exit(0)操作,它就消失了。帮助?守则如下:

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

代码语言:javascript
复制
public void init() {
    initComponents();
    initActions();  

    setLocationRelativeTo(null); 
    pack();
    setVisible(true);
}

private void initActions() {
    this.menuItemExit.setAction(Application.getInstance().getPanelControl().getActionExit());

}

PanelControl

代码语言:javascript
复制
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);
    }

}

应用程序

代码语言:javascript
复制
private void init() {
    viewMainPanel = new MainPanel();
    controlPanel = new ControlPanel();
    viewMainPanel.init();

}

我想问题在这里的某个地方,但我不知道在哪里。有什么帮助吗?(还有其他代码,但我只是放了更相关的部分,我还翻译了意大利语的代码,所以我很抱歉,如果有任何问题或几个名字不匹配)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-13 17:10:42

代码语言:javascript
复制
private Action actionExit;


public Action getActionExit() {
    return actionExit;
}

您的actionExit变量为空。

在代码中没有任何地方可以创建ActionExit类的实例。

你需要的地方:

代码语言:javascript
复制
actionExit = new ActionExit();

您的设计似乎有点复杂,我不知道为什么只创建一个ActionExit类实例的面板。

我建议您只需在主类中创建ActionExit实例,并去掉PanelControl类。

与其使用IDE生成令人困惑的代码,不如考虑学习如何自己编写代码,以便更好地构造类。阅读有关如何使用菜单的Swing教程中的部分,以获得一个工作示例,以便您开始工作。

票数 0
EN

Stack Overflow用户

发布于 2018-11-13 17:24:11

菜单项必须添加到本机Java Swing组件中。您必须将其添加到JFrame中。不能将MenuItem添加到面板中。任何Java应用程序中的父“根”容器都是“本机”和JFrame。容器中的其他所有东西都是使用您选择的外观和感觉“绘制”到矩形中的。

然后使用您的MenuItem项创建一个TAbstractAction。该对象可用于创建JButton、JMenuItem或ToolBar按钮。在代码中保持对TAbstractAction的引用,可以启用/禁用对象,它实现了一个“可观察的”模式,在该模式中,它将启用/禁用用于使用它构建的所有UI控件。实际上,我为Java应用程序编写了一个Java Swing框架。它曾经出现在Sun开放源码网站上。如果你愿意的话,我可以把它放在GitLab上供你玩。JavaFX不错,但是JavaFX应该是JVM上UI的长期目标。

在您的JFrame对象中,您需要这样做:

代码语言:javascript
复制
 _menuBar = new JMenuBar();

  // add controls to the frame
  setJMenuBar(_menuBar);

然后,您需要将“exitMenuItem”添加到_MenuBar控件中。干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53286160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档