我在JFrame中添加了菜单栏并为菜单项添加事件(在窗口中添加一个JComponent),但是窗口中不显示!
代码如下:
package frame;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.*;
import javax.swing.event.*;
public class Main
{
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MenuFrame frame = new MenuFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MenuFrame extends JFrame{
public MenuFrame()
{
setTitle("TraPre");
setBounds(200, 90, DEFAULT_WIDTH, DEFAULT_HEIGHT);
// setLayout(null);
JMenu fileMenu = new JMenu("File");
// demonstrates accelerators
JMenuItem openItem = fileMenu.add(new TestAction("Open"));
openItem.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));
fileMenu.addSeparator();
JMenu SaveMenu = new JMenu("Save ");
final JMenuItem SaveTraItem = new JMenuItem("Save Tra");
SaveTraItem.setAccelerator(KeyStroke.getKeyStroke("ctrl T"));
SaveMenu.add(SaveTraItem);
final JMenuItem SaveEnItem = new JMenuItem("Save En");
SaveEnItem.setAccelerator(KeyStroke.getKeyStroke("ctrl E"));
SaveMenu.add(SaveEnItem);
fileMenu.add(SaveMenu);
fileMenu.add(new AbstractAction("Exit")
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.addMenuListener(new MenuListener()
{
public void menuSelected(MenuEvent event)
{
SaveTraItem.setEnabled(false);
SaveEnItem.setEnabled(false);
}
public void menuDeselected(MenuEvent event)
{}
public void menuCanceled(MenuEvent event)
{}
});
// demonstrate icon
Action cutAction = new TestAction("Cut");
cutAction.putValue(Action.SMALL_ICON, new ImageIcon("cn.gif"));
Action copyAction = new TestAction("Copy");
copyAction.putValue(Action.SMALL_ICON, new ImageIcon("nz.gif"));
Action pasteAction = new TestAction("Paste");
pasteAction.putValue(Action.SMALL_ICON, new ImageIcon("gi.gif"));
JMenu DrawMenu = new JMenu("画网格");
DrawMenu.add(new DrawGridAction("Input Para"));
// JMenuItem ParaItem = new JMenuItem("输入参数");
// ParaItem.addActionListener(new ActionListener()
// {
// public void actionPerformed(ActionEvent event)
// {
// JComponent drawgrid = new DrawComponent();
// panel1.add(drawgrid);
// JButton button = new JButton();
// add(button, BorderLayout.NORTH);
// validate();
// }
// });
// ParaItem.addActionListener(new DrawGridAction());
// DrawMenu.add(ParaItem);
JMenu ImportDataMenu = new JMenu("导入数据");
JMenuItem SqlTraItem = new JMenuItem("从SQL导入原始记录");
JMenuItem TxtEnItem = new JMenuItem("从TXT导入轨迹序列");
ImportDataMenu.add(SqlTraItem);
ImportDataMenu.add(TxtEnItem);
JMenu GenerateTraMenu = new JMenu("生成轨迹");
JMenu ComputEnMenu = new JMenu("熵值计算");
JMenuItem AllTraItem = new JMenuItem("计算所有轨迹熵值");
JMenuItem OneTraItem = new JMenuItem("计算一条轨迹的不同时间段的熵值");
JMenuItem SomeTimeItem = new JMenuItem("计算所有轨迹不同时间段的熵值");
ComputEnMenu.add(AllTraItem);
ComputEnMenu.add(SomeTimeItem);
ComputEnMenu.add(OneTraItem);
JMenu TraPreMenu = new JMenu("轨迹预测");
// demonstrate mnemonics
JMenu helpMenu = new JMenu("Help");
helpMenu.setMnemonic('H');
JMenuItem indexItem = new JMenuItem("Index");
indexItem.setMnemonic('I');
helpMenu.add(indexItem);
// you can also add the mnemonic key to an action
Action aboutAction = new TestAction("About");
aboutAction.putValue(Action.MNEMONIC_KEY, new Integer('A'));
helpMenu.add(aboutAction);
// add all top-level menus to menu bar
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
menuBar.add(fileMenu);
menuBar.add(DrawMenu);
menuBar.add(ImportDataMenu);
menuBar.add(GenerateTraMenu);
menuBar.add(ComputEnMenu);
menuBar.add(TraPreMenu);
menuBar.add(helpMenu);
// demonstrate pop-ups
popup = new JPopupMenu();
popup.add(cutAction);
popup.add(copyAction);
popup.add(pasteAction);
JPanel panel = new JPanel();
panel.setComponentPopupMenu(popup);
add(panel);
// the following line is a workaround for bug 4966109
panel.addMouseListener(new MouseAdapter(){});
// DrawComponent drawgrid = new DrawComponent();
// add(drawgrid);
}
public static final int DEFAULT_WIDTH = 900;
public static final int DEFAULT_HEIGHT = 600;
private JPopupMenu popup;
// private DrawComponent drawgrid;
class TestAction extends AbstractAction
{
public TestAction(String name)
{
super(name);
}
public void actionPerformed(ActionEvent event)
{
System.out.println(getValue(Action.NAME) + " selected.");
}
}
class DrawGridAction extends AbstractAction{
public DrawGridAction(String name)
{
super(name);
}
public void actionPerformed(ActionEvent event)
{
JButton button = new JButton();
add(button, BorderLayout.SOUTH);
JComponent drawgrid = new DrawComponent();
getContentPane().add(drawgrid);
validate();
setVisible(true);
System.out.println(getValue(Action.NAME) + " selected.");
}
}
}