数時間試行錯誤したものの全く進展がなく、挫折しそうになってしまったので、質問させてください。
環境は、OS: Windows 7 IDE: Eclipseです。
知識レベルは、Cが入門書卒業程度、JavaはSwingでミニゲーム(テトリス等)レベルは自作経験有り。Appletに関しては初挑戦です。
プログラムは、JAppletを継承したMainクラスと、JPanelを継承したMainPanelクラスで構成しています。
現状は、MainPanel内でオーバーライドしたpaintComponent()が呼ばれず、アプレットビューアーが真っ白のままになります。
Mainクラス内のループからmainPanel.repaint()を実行しても呼ばれません。
以下がコードです。
Mainクラスがこちらです。
public class Main extends JApplet {
// 利用クラスの宣言
MainPanel mainPanel;
//GameScene gameScene;
// 定数
public static int fps;
public static int blockSize;
// 画像ファイル
public static BufferedImage[] blockImage;
@Override
public void init() {
// クラス変数の読み込み
fps = 16;
blockSize = 24;
// ブロック画像の配列生成・読み込み
// TODO
} // init
@Override
public void start() {
// シーンのインスタンス化
//gameScene = new GameScene();
// コンテンツペイン
Container contentPane = getContentPane();
// パネル設定
Dimension panelSize = getSize();
mainPanel = new MainPanel();
mainPanel.setSize(panelSize);
contentPane.add(mainPanel);
// メインループ
while(true) {
System.out.println("MAINLOOP");
// シーン処理
//gameScene.run();
// 描画
mainPanel.repaint();
// FPS管理
try { Thread.sleep(1000 / Tetris.fps); } catch(InterruptedException e) {}
}
} // start
}
public class MainPanel extends JPanel {
// ゲームシーンから描画に利用するオブジェクト
// TODO
@Override
public void paintComponent(Graphics g) {
System.out.println("MAINPANEL: paintComponent");
super.paintComponent(g);
g.setColor(Color.RED);
g.drawLine(10, 10, 100, 100);
// ゲーム画面描画
//drawGame(g);
g.dispose();
} // paintComponent
}