我是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);
}
.
.
.
}
}
答案 0 :(得分:3)
Play
不是Swing知道如何绘制的任何子类。您不能在班级中实施paint
方法,并让它神奇地工作。
尝试在@Override
方法之前添加paint
@Override
public void paint(Graphics g)
{
无法编译。它编译的原因是,编译器推断super.paint
的调用是JFrame
的{{1}}方法,你真的不想这样做做。
相反,请尝试从paint
扩展Play
并覆盖它的JPanel
方法,然后在框架中添加paintComponent
的实例,例如任何其他组件。
Play