知道为什么菜单栏menuBar
没有显示?一切看起来都很好。
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class mySticky extends JFrame implements ActionListener{
//weStart!
JFrame frame = new JFrame("Sticky Note");
JMenuBar menuBar = new JMenuBar();
JMenu noteMenu = new JMenu("Note");
JMenuItem newNote = new JMenuItem("New Note");
JMenuItem open = new JMenuItem("Open");
JMenuItem saveAs = new JMenuItem("Save As");
JMenuItem save = new JMenuItem("Save");
//Constructor
public mySticky(){
setSize(400,300);
setLocation(500,250);
setTitle("Sticky Note");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
menuBar.add(noteMenu);
noteMenu.add(newNote);
noteMenu.add(open);
noteMenu.add(saveAs);
noteMenu.add(save);
frame.setJMenuBar(menuBar);
}
public void actionPerformed (ActionEvent e){
}
public static void main (String [] args ){
mySticky sticky = new mySticky ();
sticky.setVisible(true);
}
}
答案 0 :(得分:4)
您将菜单栏添加到frame
,它永远不会添加到任何UI。取代
frame.setJMenuBar(menuBar);
通过
setJMenuBar(menuBar);
并且您的菜单栏将变得可见。或者您也应该将frame
添加到用户界面。不确定你想要达到的目的。
您应该将主方法的代码包装在Runnable
中并在EDT上执行(例如使用EventQueue.invokeLater
)
答案 1 :(得分:3)
而不是frame.setJMenuBar(menuBar)
,请在构造函数中尝试this.setJMenuBar(menuBar)
。