私はJavaを教えるためにハンベマンゲームを作っています。私はフレームの本体に入っています。Java hangman game repaint()not working
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);
}
}
}
そして、私が使用しています::
this.add(new PaintSurface(), BorderLayout.CENTER);
私が持っている
repaint();
を...プロジェクト全体のフレームが更新されるたびに、新しい手紙を推測し、正しくありません新しいゲームを推測する。
アプリケーションが最初にJOptionPane.showMessageDialog(null、 "Repainting")を実行するとき。私はそれが呼び出されていることを知っているので、ポップアップ。その後、 "Repainting"ポップアップはもう表示されないので、私はrepaint()を知っています。コールは何もしていません。私は、コードがrepaint()に到達していることを知っています。私はJOptionPane.showMessageDialogを前後に配置しています。私は運を試してみた
:
のremoveAll();
revalidate();
getContentPane()。repaint();
これについてのヒントとヒントは非常に高く評価されます。
編集:「塗料」にコードを入れておいてこれを試してみましたが、これは以前のようでしたが、まだ動作していません。しかし、ありがとう。
"public PaintSurface(){...}"は、PaintSurfaceクラスのコンストラクタです。 PaintSurfaceが "new PaintSurface()"で作成された場合にのみ呼び出されます。シェイプオブジェクトを作成するあなたのロジックは、どこか他の場所にあるはずです(おそらくペイントメソッドですが、私はこれが答えではないとは確信していません;)) –