[英]Adding a JMenuBar to a JFrame from another class
我创建了一个包含基本 JFrame 的类和另一个包含 JMenu 代码的类,但是当我尝试在窗口类中调用 JMenu 时,我无法使用 setJMenu()。 我不确定我错过了什么有人可以帮忙吗?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Window {
JFrame frame;
Menubar m = new Menubar();
Window(){
frame = new JFrame("Test Frame");
frame.setJMenuBar(m);
frame.setSize(200, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Menubar {
JMenuBar menubar;
JMenu menu;
JMenuItem item1;
Menubar(){
menubar = new JMenuBar();
menu = new JMenu("File");
item1 = new JMenuItem("item");
menubar.add(menu);
menu.add(item1);
}
}
VS Code 告诉我使用 getJMenu 也不起作用。
您的问题只是您没有在 MenuBar 中公开 JMenuBar
而不是你的MenuBar()
构造函数,添加这个
public static JMenuBar createMenuBar(){
menubar = new JMenuBar();
menu = new JMenu("File");
item1 = new JMenuItem("item");
menubar.add(menu);
menu.add(item1);
return menu;
}
在窗口中
Window(){
frame = new JFrame("Test Frame");
frame.setJMenuBar(MenuBar.createMenuBar());
当然,问题在于您没有将Action
添加到菜单栏中的 JMenuItem,这就是为什么在一个类中构建整个 GUI 通常更好……除非您还添加 API 来执行类似的操作通过Window
中的方法设置按钮的 Action
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.