java在鼠标单击时关闭JFrame
嘿,伙计们,我想我的JFrame在鼠标点击后关闭。我有代码做它,但它不工作
public void closeFrame ()
{
jPanel.removeAll ();
String x = "";
JLabel exit = new JLabel ("Click Anywhere To Close!", JLabel.CENTER);
exit.setPreferredSize (new Dimension (700, 100));
jPanel.add (exit);
jPanel.revalidate ();
MouseListener ml = new MouseAdapter ()
{
public void mouseClicked (MouseEvent event)
{
//Put JFrame close code here
dispose ();
System.exit (0);
}
}
;
addMouseListener (ml);
validate (); //This hasn't made a difference :(
}
该类扩展了JFrame,但未实现MouseListener。尽管如此,代码还是不起作用
这就是JFrame初始化的样子(希望有帮助)
public void createFrame ()
{
new JFrame (":) :)");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
//Some Initialization for jPanel variable
getContentPane().add(jPanel);
pack();
}
如何使此代码正常工作&;如果我不能,有没有其他方法可以在鼠标点击时关闭
---编辑---
感谢装满鳗鱼的气垫船
必须将鼠标侦听器添加到JPanel中
//WORKING CODE
public void closeFrame ()
{
jPanel.removeAll ();
String x = "";
JLabel exit = new JLabel ("Click Anywhere To Close!", JLabel.CENTER);
exit.setPreferredSize (new Dimension (700, 100));
jPanel.add (exit);
//jPanel.revalidate ();
MouseListener ml = new MouseAdapter ()
{
public void mouseClicked (MouseEvent event)
{
//Put JFrame close code here
dispose ();
System.exit (0);
}
}
;
jPanel.addMouseListener (ml);
jPanel.revalidate ();
}
# 1 楼答案
这就是我所做的
# 2 楼答案
我想知道您添加了MouseListener的JFrame contentPane是否与正在显示的JFrame不同,特别是因为我看到您在createFrame方法中创建了一个新的JFrame。您知道MouseListener只有在添加到可视化组件时才能工作,对吗
建议: