Java - 子类中的paint方法不起作用

时间:2015-04-09 01:12:58

标签: java swing jframe jpanel paint

我是Java的新手,我目前正在为二十一点游戏开发GUI。我通过paint方法在屏幕上显示组件时遇到问题。 paint方法位于一个名为play的子类中(见下文)。当油漆位于游戏外但在BlackJack内部时它起作用。有人能帮助我吗?

public class BlackJack extends JFrame
{

.
.
.

public class play implements ActionListener
{       

    .
    .
    .

    public void paint(Graphics g)
    {
        super.paint(g);

        Font bigFont = new Font("HURTMOLD_", Font.BOLD, 20);

        g.setFont(bigFont);
        g.setColor(Color.decode("#52504D"));

        g.drawString("Dealer", 50, 80);
        g.drawString("Player", 50, 290);

        g.setColor(Color.white);
        g.drawLine(120, 76, 700, 76);
        g.drawLine(20, 76, 40, 76);
        g.drawLine(20, 240, 700, 240);
        g.drawLine(20, 76, 20, 240);
        g.drawLine(700, 76, 700, 240);

        g.drawLine(120, 286, 700, 286);
        g.drawLine(20, 286, 40, 286);
        g.drawLine(20, 450, 700, 450);
        g.drawLine(20, 286, 20, 450);
        g.drawLine(700, 286, 700, 450);

        g.setColor(Color.blue);
        g.fillRect(50,113,71,96);
        g.fillRect(151,113,71,96);
        g.fillRect(252,113,71,96);
        g.fillRect(353,113,71,96);
        g.fillRect(454,113,71,96);        
    }
    .
    .
    .
}

}

1 个答案:

答案 0 :(得分:3)

Play不是Swing知道如何绘制的任何子类。您不能在班级中实施paint方法,并让它神奇地工作。

尝试在@Override方法之前添加paint

@Override
public void paint(Graphics g)
{

无法编译。它编译的原因是,编译器推断super.paint的调用是JFrame的{​​{1}}方法,你真的不想这样做做。

相反,请尝试从paint扩展Play并覆盖它的JPanel方法,然后在框架中添加paintComponent的实例,例如任何其他组件。

Play