gpt4 book ai didi

java - ActionListener 似乎不起作用?

转载 作者:行者123 更新时间:2023-11-29 03:45:52 25 4
gpt4 key购买 nike

我想制作一款 2D 游戏。我开始创建绘图类,但我遇到了一个问题:ActionListener 不起作用。它不会绘制或输出我的消息来说明它正在工作。这是代码:

public class Drawing extends JPanel implements ActionListener {

private int count = 0;

public void actionPerformed(ActionEvent e) {
count++;
repaint();
}

@Override
protected void paintComponent(Graphics g) {
System.out.println("Hi");
g.setColor(Color.black);
g.clearRect(0, 0, Boot.WIDTH, Boot.HEIGHT);
g.fillRect(0, 0, Boot.WIDTH, Boot.HEIGHT);

g.setColor(Color.white);
g.drawString("Path count: " + count, 50, 50);
}
}

我认为这会奏效,因为我在其他项目中使用了这种绘图方式。是什么原因造成的?

最佳答案

您不应该保留对 Graphics 对象的引用并直接调用 paint()。您应该调用 repaint(),并等待 Swing 调用 paintComponent() 方法,您应该覆盖该方法以在 Graphics 对象上执行自定义绘画Swing 作为参数传递给该方法。

参见 http://java.sun.com/products/jfc/tsc/articles/painting/index.html获取更多信息。

public class Drawing extends JPanel implements ActionListener {

private int count = 0;

public void actionPerformed(ActionEvent e) {
count++;
repaint();
}

@Override
protected void paintComponent(Graphics g) {
System.out.println("Hi");
g.setColor(Color.black);
g.clearRect(0, 0, Boot.WIDTH, Boot.HEIGHT);
g.fillRect(0, 0, Boot.WIDTH, Boot.HEIGHT);

g.setColor(Color.white);
g.drawString("Path count: " + count, 50, 50);
}
}

关于java - ActionListener 似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956684/

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