我一直在做一个子手游戏来自学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”);弹出,所以我知道它当时被称为。之后,不再显示“重新绘制”弹出窗口,因此我知道repaint();不再显示。电话什么都没做。我知道代码正在到达repaint();调用,就像我在它们之前和之后放置一个JOptionPane.showMessageDialog一样。

我尝试过没有运气:



任何提示和技巧,将不胜感激。

编辑:我已经按照您的建议进行了尝试,将代码放入“画图”中,认为这是我以前的方法,但仍然无法正常工作。不过谢谢

最佳答案

  • 不要根据您的需要覆盖绘画,覆盖paintComponent或进行更新。
  • 似乎您在paint,repaint和update方法之间存在混淆。阅读:https://www.guiguan.net/repaint-paint-and-update/如果您正在玩游戏,则repaint()将导致整个组件的重新绘制,因此您将遇到一些性能问题。
  • 关于Java hang子手游戏repaint()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36937559/

    10-10 08:01