gpt4 book ai didi

java - 使 Swing JMenuBar 出现的问题

转载 作者:行者123 更新时间:2023-11-29 10:13:07 25 4
gpt4 key购买 nike

所以,因为这是一个学校项目,所以我无法发布实际的源代码。相反,我将尝试解释发生了什么并使用一些代码片段。

对于该项目,JFrame 包含的 JPanel 包含整个 GUI 的大部分组件。我会喜欢

JButton b1 = new Button("Option 1");
JButton b2 = new Button("Option 2");
JPanel p = new JPanel();
p.add(b1);
p.add(b2);

将它添加到 JFrame 对象中效果很好,但是当我有

JMenuBar mb = new JMenuBar();
JPopupMenu pm = new JPopupMenu("File");
mb.add(pm);
myJFrameObject.add(mb);

菜单栏不见了。我应该使用

myJFrameObject.setJMenuBar(mb);

相反?我记得也没有真正做任何事情。顺便说一下,我一直在为框架使用 BoxLayout。

最佳答案

一些事情

  1. 您不想使用 JPopupMenuUse JMenu .
  2. 你想使用 .setJMenuBar(mb) 是正确的.
  3. 你为什么要做 JButton b1 = new Button(); 那还能编译吗?还是打错了?

基于您的代码的完整工作示例:

import java.awt.EventQueue;

import javax.swing.*;

public class MenuExample {
private JFrame myJFrameObject;

public MenuExample() {
myJFrameObject = new JFrame();

JButton b1 = new JButton("Option 1");
JButton b2 = new JButton("Option 2");
JPanel p = new JPanel();
p.add(b1);
p.add(b2);
myJFrameObject.setContentPane(p);

JMenuBar mb = new JMenuBar();
JMenu pm = new JMenu("File");
mb.add(pm);
myJFrameObject.setJMenuBar(mb);

myJFrameObject.pack();
}

public void setVisible(boolean visible) {
myJFrameObject.setVisible(visible);
}

public static void main(String... args) {
final MenuExample example = new MenuExample();

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
example.setVisible(true);
}
});
}
}

输出:

Screenshot of OP's code

关于java - 使 Swing JMenuBar 出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26494858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com