gpt4 book ai didi

java - 使用 Swing 通过鼠标事件影响 boolean 变量

转载 作者:行者123 更新时间:2023-11-29 05:14:56 25 4
gpt4 key购买 nike

我不确定为什么我的鼠标监听器设置的鼠标事件不会影响帽子是否被绘制。变量“mouseInside”似乎不受鼠标事件的影响。如何使用鼠标事件将变量更改为 false?

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

public class EyesOpen extends JPanel{

private Ellipse2D.Double head;
private Ellipse2D.Double eyeOne;
private Ellipse2D.Double eyeTwo;
private Rectangle2D.Double hatBody;
boolean mouseInside;



public EyesOpen(){

this.setFocusable(true);
this.requestFocus();
this.setPreferredSize(new Dimension(500,500));

head = new Ellipse2D.Double(180,180,140,140);
eyeOne = new Ellipse2D.Double(220,220,20,20);
eyeTwo = new Ellipse2D.Double(260,220,20,20);
hatBody = new Rectangle2D.Double(170,180,160,20);



class MyMouseListener implements MouseListener{
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e){

mouseInside=true;

}
public void mouseExited(MouseEvent e){
mouseInside=false;


}
public void mousePressed(MouseEvent e){

}
public void mouseReleased(MouseEvent e){
}
}
this.addMouseListener(new MyMouseListener());
}

public void paintComponent(Graphics g){

super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;

g2.setPaint(Color.BLUE);
g2.fill(head);

g2.setPaint(Color.BLACK);
g2.fill(eyeOne);

g2.setPaint(Color.BLACK);
g2.fill(eyeTwo);

if(mouseInside=true){
g2.setPaint(Color.BLACK);
g2.fill(hatBody);}

}

public static void main(String[] args){
JFrame f = new JFrame("Head");

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLayout(new FlowLayout());
f.add(new EyesOpen());
f.pack();
f.setVisible(true);
}
}

最佳答案

不要忘记在更改 boolean 值后调用 repaint()

准确地说,您可以指定通过 EyesOpen.this.repaint(); 调用绘图组件的方法,但这在当前程序中不是绝对必要的(我不要想)。

其他问题:

  • paintComponent(...) 方法应指定为protected 而不是public。暴露它没有任何意义,因为它需要暴露。
  • 不要忘记使用@Override 注释,任何时候您认为您正在覆盖一个方法。尽管此计划可能无关紧要,但它在将来挽救您的后腿。
  • 您需要通过将 JFrame 创建代码放在 Runnable 中,然后通过将 Runnable 放入 SwingUtilities.invokeLater(/** 你的 Runnable 在这里 **/);

关于java - 使用 Swing 通过鼠标事件影响 boolean 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922554/

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