我已经创建了一个包含基本JFrame的类和另一个包含JMenu代码的类,但是当我尝试在窗口类中调用JMenu时,我无法使用setJMenu()。我不确定我错过了什么,有人能帮助我吗?
Window.java
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);
}
}
Menubar.java
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代码告诉我使用getJMenu,这也不起作用。
1条答案
按热度按时间q0qdq0h21#
您的问题很简单,您没有在MenuBar中公开JMenuBar
添加以下内容,而不是
MenuBar()
构造函数在窗口中
当然,问题是您没有将
Action
添加到菜单栏中的JMenuItem,这就是为什么在一个类中构建整个GUI通常更好的原因......除非您还添加API来执行诸如通过Window
中的方法设置按钮的Action之类的操作