Эй, ребята, я хочу, чтобы мой 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();
}
Как я могу заставить этот код работать и если я не могу, есть ли альтернативный способ закрытия по щелчку мыши?
--- EDIT ---
Спасибо, что на воздушной подушке полно угрей
MouseListener должен быть добавлен к 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 ();
}