gpt4 book ai didi

Java刽子手游戏重绘()不工作

转载 作者:搜寻专家 更新时间:2023-10-31 20:32:48 26 4
gpt4 key购买 nike

我一直在制作刽子手游戏来自学 Java。我已经进入了框架的主体。

this.add(new PaintSurface(), BorderLayout.CENTER);

我有:

private class PaintSurface extends JComponent {
Shape found = null;

public PaintSurface(){
JOptionPane.showMessageDialog(null, "Repainting");
Shape s;
msgbox("LL: " + intLivesLost);
switch(intLivesLost){
//draw the Hanged man
case 10:
//Face + KILL
case 9:
//2nd Arm
case 8:
//1st Arm
case 7:
//2nd Leg
case 6:
//1st Leg
case 5:
//Body
case 4:
//Head
shapes.add(s);
case 3:
//Horizontal Bar
s = new Line2D.Float(100, 450, 250, 450);
shapes.add(s);
//Rope
s = new Line2D.Float(250, 450, 250, 500);
shapes.add(s);
case 2:
//Vertical Bar
s = new Line2D.Float(100, 450, 100, 670);
shapes.add(s);
case 1:
//Stand
s = new Line2D.Float(40, 670, 460, 670);
shapes.add(s);
break;
default:
break;
}
}

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setStroke(new BasicStroke(4));
g2.setColor(Color.BLACK);

for (Shape count : shapes){
g2.draw(count);
}
}
}

我正在使用:

repaint();

...在整个项目中,每次更新框架、猜出新字母、猜错、新游戏。

当应用程序首次运行时 JOptionPane.showMessageDialog(null, "Repainting");弹出,所以我知道它被调用了。之后,“Repainting”弹出窗口不再出现,所以我知道 repaint();电话什么都不做。我知道代码正在进入 repaint();调用,因为我在它们之前和之后放置了一个 JOptionPane.showMessageDialog。

我尝试过但没有成功:

removeAll();
revalidate();
getContentPane().repaint();

对此的任何提示和技巧将不胜感激。

编辑:我已经按照你的建议试过了,把代码放在“paint”里,我想这是我以前的做法,但还是不行。不过谢谢。

最佳答案

  1. 不要覆盖 paint,覆盖 paintComponent 或根据您的需要更新。
  2. 您似乎混淆了绘制、重绘和更新方法。读这个:https://www.guiguan.net/repaint-paint-and-update/如果你在做游戏,repaint()会导致整个组件重绘,所以你会有一些性能问题。

关于Java刽子手游戏重绘()不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36937559/

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