gpt4 book ai didi

java - 当我将鼠标放在 JLabel 上时如何调用 JFrame 以及当我从 JLabel 上移除鼠标时如何关闭相同的 JFrame?

转载 作者:行者123 更新时间:2023-12-02 03:31:41 24 4
gpt4 key购买 nike

在我的程序中,当我将鼠标放在 JLabel 上时,我尝试显示 JFrame ,并在从鼠标移开时关闭 JFrame JLabel

我该怎么做?

我尝试了以下方式,但我的窗口不断闪烁(不断弹出并关闭)

public class NewJFrame extends javax.swing.JFrame {

NewJFrame1 frame = new NewJFrame1();
public NewJFrame() {
initComponents();

}
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
//======================================================================
jLabel1.addMouseListener(new MouseAdapter()
{

public void mouseEntered(MouseEvent e)
{
frame.setVisible(true);
}
});
jLabel1.addMouseListener(new MouseAdapter()
{
public void mouseExited(MouseEvent e)
{
frame.setVisible(false); //Hide window
}
});
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Testing ");

//======================================================================
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});

}
public javax.swing.JLabel jLabel1;
}

在这些行之间//============我有主要代码

当我将鼠标放在 JLabel 上时如何显示 JFrame 以及当我从 上移开鼠标时如何关闭 JFrame JLabel

当我删除下面的代码时,当我将鼠标放在 JLabel 上时,我会收到 JFrame 弹出窗口,但是当我删除来自 JLabel 的鼠标。

jLabel1.addMouseListener(new MouseAdapter()
{
public void mouseExited(MouseEvent e)
{
frame.setVisible(false); //Hide window
}
});

最佳答案

  1. 您的代码完全错误,无法清楚地阅读和理解您要尝试什么。
  2. 问题是您在标签上创建了新的 JFrame,因此您的鼠标焦点更改为新的 JFrame,并且 JLabel 的监听器说新窗口会一次又一次消失。要解决此问题,请在当前窗口之外设置新位置。
  3. 主要方法的代码如下:

    public static void main(String[] args) {
    EventQueue.invokeLater(() -> {
    Main ex = new Main();
    ex.setVisible(true);
    });
    }

    然后将组件添加到面板:

    JPanel panel = new JPanel();
    this.add(panel);

    JLabel jLabel1 = new JLabel("Label");
    JTextField jTextField1 = new JTextField("Field");
    JButton jButton1 = new JButton("Button");
    panel.add(jLabel1);
    panel.add(jTextField1);
    panel.add(jButton1);

    然后创建新的溅射 JFrame 并设置当前的 JFrame。由于您的主类扩展了 JFrame,因此您可以使用关键字 this

    JFrame frame = new JFrame();
    frame.setSize(300, 200);
    frame.setVisible(false);

    this.setTitle("Title");
    this.setSize(300, 200);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

最后让监听器通过您的代码完成工作。

关于java - 当我将鼠标放在 JLabel 上时如何调用 JFrame 以及当我从 JLabel 上移除鼠标时如何关闭相同的 JFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010571/

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