gpt4 book ai didi

Java 嵌套类不对 MouseListener 事件使用react

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

在 Java 中,我尝试创建一个类,用于在 JFrame 中显示两个 JPanel 组件,并在其中一个组件中添加一个 Mouselistener。我创建一个主 JPanel 并在其中嵌套一个名为drawRec(JPanel 类型)的私有(private)类,用于绘制一个矩形,该矩形应该处理他上方的鼠标事件,但是当我单击时,什么也没有发生。这是我的代码:

public class Exercise2 extends JPanel  {

private drawRec square;


public static void main(String[] args) {
JFrame wind = new JFrame();
Exercise2 content = new Exercise2();
wind.setContentPane(content);
wind.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
wind.setLocation(100, 100);
wind.setSize(new Dimension(500,500));
wind.setVisible(true);

}

Exercise2() {
setBackground(Color.BLACK);
square = new drawRec();
}

public void paintComponent(Graphics g) {

super.paintComponent(g);
square.draw(g, 100, 90);
}

private class drawRec extends JPanel implements MouseListener {


drawRec() {
addMouseListener(this);
}

private void draw(Graphics g, int x, int y) {

g.setColor(Color.BLUE);
g.fillRect(x, y, 50, 20);


}

public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {
System.out.println("Test");
}

public void mouseReleased(MouseEvent e) {}

}
}

提前致谢

最佳答案

您的框架不包含 drawRec控制板。它包含一个 Exercise2调用 drawRec.draw() 的面板绘制其内容。如果单击,您将单击 Exercise2面板,它没有鼠标监听器。

也许你应该合并这两个类。至少您必须将鼠标监听器添加到实际添加到框架中的组件中。

最短的修复可能是:

Exercise2() {
setBackground(Color.BLACK);
square = new drawRec();
this.addMouseListener(square); // add this line
}

在这种情况下,您仍然没有使用 drawRec作为面板(因为您没有将其添加到任何内容),但您可以将其用作 Exercise2 的鼠标监听器面板。

关于Java 嵌套类不对 MouseListener 事件使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38157622/

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