前提・実現したいこと
Java初心者です。初めての質問のため、質問の仕方、調べ方なども含めアドバイスをいただけると幸いです。
今回、Javaアプレットでコマンド入力した長方形データを即時アプレット表示するプログラムを作っています。
run()メソッドが呼び出される度に「Applet表示」の出力がされているものの、repaint()が操作の終了後にしか実行されませんでした。
少し調べてみたところ、repaint()は再描画を要求しているだけに過ぎず、repaint()と書いた場所で即時に再描画されるわけではないということはわかりました。
そこで、具体的にすぐ再描画してほしい場合はどうすればいいのでしょうか?
稚拙な質問で申し訳ございません。よろしくお願いします。
該当のソースコード
Java
1import java.applet.Applet; 2import java.awt.*; 3 4public class RectangleEditor extends Applet { 5 Command command = new Command(); 6 //コマンド入力操作を行うクラスへ受け渡し 7 public void init(){ 8 command.choseCommand(); 9 } 10 11 //他クラスから呼び出しされるメソッド 12 public void run(){ 13 System.out.println("Applet表示"); 14 repaint(); 15 } 16 17 18 //長方形のデータを受け取り、描画する 19 public void paint(Graphics g) { 20 Board board = new Board(); //長方形データを格納しているクラス 21 int[] x = board.xList(); 22 int[] y = board.yList(); 23 int[] w = board.wList(); 24 int[] h = board.hList(); 25 String[] color = board.cList(); 26 27 for(int rectNumber = 0; rectNumber < board.isList(); rectNumber ++){ 28 if(color[rectNumber].equals("red")){ 29 g.setColor(Color.red); 30 }else if(color[rectNumber].equals("blue")){ 31 g.setColor(Color.blue); 32 }else if(color[rectNumber].equals("yellow")){ 33 g.setColor(Color.yellow); 34 }else if(color[rectNumber].equals("gray")){ 35 g.setColor(Color.gray); 36 } 37 38 g.fillRect(x[rectNumber],y[rectNumber],w[rectNumber],h[rectNumber]); 39 } 40 } 41}
試したこと
repaint();の後に、Thread.sleep(10000);を追加して時間の間隔を開けましたが、
結果は変わりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/05 04:51
2019/05/05 11:03 編集
2019/05/05 14:43
2019/05/05 15:13