我想创建一个不同的函数来为java应用程序制作菜单栏。
在动作侦听器和frame.pack()
语句中的菜单栏函数frame.setJMenuBar
中。
那么我们如何将frame作为对象传递给子类作为参数? 我在
中遇到错误imports..
public class sjava {
public static void CreateAndRunGUI() {
final JFrame frame = new JFrame("MyFrame");
code..
MakeMenuBar(frame);
frame.pack();
frame.setVisible(true);
}
public static void MakeMenuBar(Object frame) {
JMenuBar menubar = new JMenuBar();
menubar.setBackground(new Color(180,160,130));
menubar.setOpaque(true);
menubar.setPreferredSize(new Dimension(800,20));
frame.setJMenuBar(menubar);
JMenu menu1 = new JMenu("menu1");
code..
mitem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
code..
SwingUtilities.updateComponentTreeUI(frame);
frame.pack();
}
});
code..
mitem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
code..
SwingUtilities.updateComponentTreeUI(frame);
frame.pack();
}
});
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
CreateAndRunGUI();
}
});
}
可以使用makemenubar
函数而不使用frame作为参数吗?
答案 0 :(得分:1)
你必须更换
public static void MakeMenuBar(Object frame) {...}
与
public static void MakeMenuBar(JFrame frame) {...}
否则无法访问类JFrame
的方法。