gpt4 book ai didi

java - 没有 javac 编译器错误,但 mouseEntered 方法不起作用

转载 作者:行者123 更新时间:2023-12-01 16:51:22 25 4
gpt4 key购买 nike

我正在尝试制作一个程序,当您将鼠标悬停在某个元素上时,它将被设置为不可见,而新的元素将在不同的位置设置为可见。但是,当我将鼠标悬停在按钮上时,什么也没有发生。没有编译器错误告诉我要修复什么,所以我遇到了堆栈溢出。我对 Java 非常缺乏经验,我昨天才开始,所以如果你能帮我简化一下。这是我的代码:


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class hover {

public static void main(String args[]) {

JFrame f = new JFrame("Java Swing UI");
GridLayout l = new GridLayout(2,4);
JButton b = new JButton("Click me!");
JButton b2 = new JButton("Click me!");
f.setSize(500,300);
f.setLayout(l);
b.setBackground(Color.WHITE);
b2.setBackground(Color.WHITE);
f.add(b);
f.add(b2);
b2.setVisible(false);

b.addMouseListener(new MouseAdapter() {

@Override
public void mouseEntered(MouseEvent e) {

if (e.getSource() == f) {
b.setVisible(false);
b2.setVisible(true);
}


}

});
f.setVisible(true);
}
}

最佳答案

I am very inexperienced in Java and I just started yesterday

因此,您需要学习的第一件事是如何使用 System.out.println(...) 进行一些基本的调试,以查看您的逻辑是否按照您的预期进行。例如:

@Override
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered");
if (e.getSource() == f) {
System.out.println("if statement");
b.setVisible(false);
b2.setVisible(true);
}
}

如果您这样做,您会注意到运行代码时不会看到“if 语句”显示。那么问题是为什么?

b.addMouseListener(new MouseAdapter() {

您将 MouseListener 添加到了“b”变量。

if (e.getSource() == f) {

但是你的 if 语句检查事件是否来自“f”变量,这永远不会是真的。

不需要 if 语句,因为只能为“b”按钮生成事件。因此你只需要:

@Override
public void mouseEntered(MouseEvent e)
{
b.setVisible(false);
b2.setVisible(true);
}

关于java - 没有 javac 编译器错误,但 mouseEntered 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61681294/

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