我正在尝试编写代码,以便当用户单击“文件”选项卡并选择“退出”时,它会退出我构建的整个窗口。
我正在尝试使用dispose();
方法,但它给了我错误
“对于类型new ActionListener()”
继承代码
public static void addLayouts(){
frame = new JFrame();
frame.setSize(600, 600);
frame.setTitle("IPFinder");
GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGap(0, 384, Short.MAX_VALUE)
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGap(0, 362, Short.MAX_VALUE)
);
frame.getContentPane().setLayout(groupLayout);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenu mnEdit = new JMenu("Edit");
menuBar.add(mnEdit);
JMenuItem mntmCopyResults = new JMenuItem("Copy Results");
mnEdit.add(mntmCopyResults);
JMenu mnAbout = new JMenu("About");
menuBar.add(mnAbout);
JMenuItem mntmAboutIpfinder = new JMenuItem("About IPFinder");
mnAbout.add(mntmAboutIpfinder);
frame.setVisible(true);
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
mnFile.add(mntmExit);
}
我花了大约2个小时在谷歌试图找到它,但我无法让它工作。
此时我已经筋疲力尽了,所以我来到了这里。 任何帮助都是相关的。
答案 0 :(得分:5)
如果您的课程延长ClassName.this.dispose()
或JFrame
,请使用JDialog
而不是简单地调用dispose()
或frame.dispose()
,如果您的frame
变量为这种类型。在您的情况下,这是第二个选项:frame.dispose();
这样,您告诉编译器您正在调用dispose()
子类型的Window
而不是ActionListener
的匿名实现,而dispose()
没有{{1}} 1}}无论如何。
答案 1 :(得分:4)
dispose()
应在JFrame
或JDialog
上调用,而不是在ActionListener
上调用。
但它给了我错误“方法dispose()未定义类型new ActionListener()”
完全。 ActionListener
只有一种方法actionPerformed()
。
http://docs.oracle.com/javase/6/docs/api/java/awt/event/ActionListener.html
答案 2 :(得分:2)
正如我所见,你已经定义了
frame = new JFrame();
您的课程不会延长JFrame
。所以当你调用dispose
时它会引发错误,因为ActionListener
类没有这样的方法。
因此请使用您要处理的组件。
Example: frame.dispose();