gpt4 book ai didi

java - 单击鼠标关闭 JFrame

转载 作者:行者123 更新时间:2023-12-04 06:26:14 25 4
gpt4 key购买 nike

嘿伙计们,我希望我的 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();
}

我怎样才能使这段代码工作,如果我不能,是否有另一种关闭鼠标的方法?

- -编辑 - -

感谢充满鳗鱼的气垫船

必须将 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 ();

}

最佳答案

我想知道您添加了 MouseListener 的 JFrame contentPane 是否与正在显示的 JFrame 不同,尤其是因为我看到您在 createFrame 方法中创建了一个新的 JFrame。您知道 MouseListener 只有在添加到可视化组件时才会起作用,对吗?

建议:

  • 不要让您的类(class)扩展 JFrame
  • 将 MouseListener 添加到要添加到可视化 JFrame 的 contentPane 的 JPanel。
  • 为您的类提供一个 JFrame 变量,并让它引用您在 createFrame 方法中创建的 JFrame。然后,您可以根据需要处理此 JFrame。
  • 不要忘记在可视化 JFrame 上调用 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。
  • 关于java - 单击鼠标关闭 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012078/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com