为了账号安全,请及时绑定邮箱和手机立即绑定

jMenuItem 没有出现

jMenuItem 没有出现

绝地无双 2022-01-19 13:11:48
我刚刚开始使用 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();}我认为问题出在此处,但我不知道在哪里。有什么帮助吗?(还有其他代码,但我只是放了更相关的部分,我也从意大利语翻译了代码,所以如果有任何问题或一些名称不匹配,我很抱歉)
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

private Action actionExit;



public Action getActionExit() {

    return actionExit;

}

您的actionExit变量为空。


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


你需要的地方:


actionExit = new ActionExit();

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


我建议您只在主类中创建 ActionExit 实例并摆脱 PanelControl 类。


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


查看完整回答
反对 回复 2022-01-19
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

必须将菜单项添加到 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 控件。


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信