私の JPanel は再描画しません。スレッドを使用してループから再描画メソッドを呼び出しています。ループが機能することは 100% 確信していますが、repaint(); を呼び出すときは 何も起こりません
package jgame.org.game;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class GamePanel extends JPanel implements Runnable
{
@Override
public void paint(Graphics g)
{
if (gameState == 0)
{
g.drawImage(new ImageIcon(System.getProperty("user.home")
+ "/jGame/FruitSlayer/Sprites/splash.png").getImage(), 0,
0, null);
} else
{
g.drawImage(new ImageIcon(System.getProperty("user.home")
+ "/jGame/FruitSlayer/Sprites/white.png").getImage(), 0,
0, null);
}
System.out.println("REPAINT");
}
public int currentLoopTime, gameState;
@Override
public void run()
{
while (true)
{
if (gameState != 1)
{
currentLoopTime += 1;
if (currentLoopTime == 2000)
{
gameState = 1;
}
}
repaint();
}
}
}
そして私のゲームクラス:
package jgame.org.game;
import java.awt.Dimension;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Game extends JFrame
{
public Dimension size = new Dimension(605, 625);
public Game()
{
super("Fruit Slayer");
setSize(size);
setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
(new Thread(new GamePanel())).start();
add(new GamePanel());
}
public static void main(String[] args)
{
new Game();
}
}
REPAINT はコンソールに出力されませんが、ループに追加すると完全に機能します。paint(Graphics); を呼び出さない原因は何ですか? repaint() を使用しているのに;???