• 締切済み

エラーの対処法を教えてください

メソッドの宣言が不正です。戻り値の型が必要です。 public Window(int width, int height){ というエラーメッセージが出たのですが解決方法をどなたかお教えください。 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public class Kadai extends JFrame implements ActionListener { private Timer timer; private int a[][] = new int[7][7]; private int b[][] = new int[7][7]; public Window(int width, int height){ setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(width, height); setVisible(true); } public static void main(String[] args) { Window window = new Window(640, 480); } public void paint(Graphics g){ g.setColor(Color.black); for (int i=5; i<26; i++){ g.drawLine(i * 10, 50, i * 10, 250); g.drawLine(50, i * 10, 250, i * 10); } } public static void main(String args[]) { Random rand = new Random(); for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ a[i][j] = rand.nextInt(2); } } for (int i=1; i<6; i++){ a[i][0] = a[i][5]; a[0][i] = a[5][i]; a[i][6] = a[i][1]; a[6][i] = a[1][i]; } a[0][0] = a[5][5]; a[0][6] = a[5][1]; a[6][0] = a[1][5]; a[6][6] = a[1][1]; for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] == 0){ g.setColor(Color.black); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); }else{ g.setColor(Color.white); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); } } } } public Kadai() { timer = new Timer( 50, this ); timer.start(); } public void actionPerformed( ActionEvent e ) { for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] = 0){ if(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 2 && a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 3){ b[i][j] = 0; }else{ b[i][j] = 1; } }else{ if(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 3){ b[i][j] = 0; }else{ b[i][j] = 1; } } } } for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ b[i][j] = a[i][j]; } } for (int i=1; i<6; i++){ a[i][0] = a[i][5]; a[0][i] = a[5][i]; a[i][6] = a[i][1]; a[6][i] = a[1][i]; } 2に続きます。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

これ、Javascriptではなく、Javaですよね? 文法は似てますが、まったく別の言語なので、混同しないように。 間違ってる箇所も、対処法も > メソッドの宣言が不正です。戻り値の型が必要です。 > public Window(int width, int height){ というメッセージにある通り。 戻り値の型を指定してください。戻り値が無い場合は void を指定します。 これが何言ってるかわからないようなら、もう一度Javaの参考書を読みなおしてください。 繰り返しますが、「Javascript」ではありません。

関連するQ&A

  • エラーの対処法を教えてください2

    続き a[0][0] = a[5][5]; a[0][6] = a[5][1]; a[6][0] = a[1][5]; a[6][6] = a[1][1]; for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] == 0){ g.setColor(Color.black); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); }else{ g.setColor(Color.white); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); } } } repaint(); } } どなたかお教えください。

  • ライフゲームにボタンを押すと何度も自動で更新されるように作りたいのです

    ライフゲームにボタンを押すと何度も自動で更新されるように作りたいのですが ↓を変えて更新されるようにするにはどうすればいいですか? public class Lifegame extends Applet implements ActionListener{ int hani = 30; int xy = 15; int sikaku = xy-2; int [][]a = new int[hani][hani]; int [][]b = new int[hani][hani]; Button button; public void init(){ for(int i=0; i < hani; i++) { for(int j = 0;j < hani; j++) { if(i==0 || j == 0 || i == hani || j == hani){ b[i][j] =0; }else{ b[i][j] = (int)(Math.random()*2); } } } button = new Button("更新"); button.addActionListener(this); add(button); } public void paint(Graphics g){ for(int i = 1; i < hani - 1; i++){ for(int j = 1; j < hani - 1; j++){ if(b[i][j] == 1){ g.setColor(Color.green); g.fillRect(i*xy, 30+j*xy, sikaku, sikaku); }else if(b[i][j] == 0){ g.setColor(Color.black); g.fillRect(i*xy, 30+j*xy, sikaku, sikaku); } } } } public void actionPerformed(ActionEvent arg0){ for(int i = 1; i < hani - 1; i++){ for(int j = 1; j < hani - 1; j++){ a[i][j] = b[i][j]; } } for(int i = 1; i < hani - 1; i++) { for(int j = 1; j < hani - 1; j++) { int hantei = a[i - 1][j - 1] + a[i - 1][j] + a[i - 1][j + 1] + a[i][j-1] + a[i][j + 1] + a[i+1][j-1] + a[i+1][j] + a[i+1][j+1]; if(b[i][j] == 1){ if(hantei == 2 || hantei == 3){ b[i][j] = 1; }else{ b[i][j] = 0; } }else if (b[i][j] == 0){ if(hantei == 3){ b[i][j] = 1; }else{ b[i][j] = 0; } } } } repaint(); } } ご回答よろしくお願いします。

    • ベストアンサー
    • Java
  • 「シンボルを見つけれません」というエラーへの対処法

    下記のコードの If(type.compareTo("名詞") == 0); で「シンボルを見つけれません」「シンボル:メソッドif(boolean)」というエラーが出てしまいます。 なぜ、他のif文ではエラーが出ないのにこの行ではエラーが出るのか分かりません。 対処法を教えていただけないでしょうか? public void set_dictionary(String dict_filename) { } public int run(byte[] text, int start, int length, byte[] terms) { String type; //品詞の比較用 byte[] buf1 = new byte[1000]; //textの内容を一時的に格納しておくための配列1 byte[] buf2 = new byte[1000]; //textの内容を一時的に格納しておくための配列2 int i, j, k, count1, count2, FLG; count1 = 0; count2 = 0; k = 0; FLG = 0; for(i = start; i < length; i++) { if(text[i] == '\t') { FLG = 1; count2 = 0; } else if(text[i] == ' ') { FLG = 0; count1 = 0; } else { if(FLG == 1) { buf2[count2++] = text[i]; } else if(FLG == 0) { buf1[count1++] = text[i]; } } if((count2 == 5)&&(FLG == 1)) { type = new String(buf2, 0, 4); If(type.compareTo("名詞") == 0); { for(j = 0; j < count1; j++) { terms[k++] = buf1[j]; } terms[k++] = '/'; } count2 = 0; FLG = 2; } } return k; //term中のデータの長さを返す }

  • ボールが勝手に動き困ってます。

    前回にひき続き困ってます>< タイトル画面→(Enterクリック)→ゲーム画面までできたんですが ゲーム画面でボールとタイマーを動かしたくてやってみるとタイマーはうまく いったのにボールが動く速度を変更できず、勝手に動いてしまいます><どう 改善すればいいでしょうか。ソースコードみにくいですが助言お願いします。 import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class JavaGame3 { public static void main(String age[]) { JFrame frame = new JFrame(); frame.setTitle("ゲームフレーム"); frame.setSize(500, 550); frame.setLocation(1000, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Testpanel panel = new Testpanel(); frame.add(panel); frame.setVisible(true); } } class Testpanel extends JPanel implements Runnable{ private Ball[] balls; static final int TITLE = 0; static final int GAME = 1; private int mode; private int sec; private Timer timer; private Thread t; public Testpanel() { balls = new Ball[5]; java.util.Random rr = new java.util.Random(); for(int i=0; i<balls.length; i++) balls[i] = new Ball(10*i+6,10*i+31,rr.nextInt(5)+1, rr.nextInt(5)+1); sec = 0; setBackground(Color.black); addKeyListener(new JavaKeyListener()); setFocusable(true); timer = new Timer(1000, new JavaActionListener()); mode = TITLE; t = new Thread(this); } class JavaActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (sec == 30) { timer.stop(); } else { sec++; } } } private void drawTitle(Graphics g) { g.setColor(Color.blue); g.drawString("タイトル", 165, 150); g.setColor(Color.white); g.drawString("Hit Enter Key!", 150, 350); } public void drawGameOver(Graphics g) { g.setColor(Color.white); g.setColor(Color.red); g.drawString(sec + "sec", 230, 300); repaint(); for (int i=0; i<balls.length; i++) balls[i].draw(g); } protected void paintComponent(Graphics g) { super.paintComponent(g); if(mode == TITLE) { drawTitle(g); } else if(mode == GAME) { drawGameOver(g); } } class JavaKeyListener implements KeyListener { public void keyPressed(KeyEvent e){ int key = e.getKeyCode(); if(mode == TITLE) { switch(key) { case KeyEvent.VK_ENTER: mode = GAME; timer.start(); t.start(); sec = 0; break;} } else { switch (key) { case KeyEvent.VK_ENTER: mode = TITLE; break; } }repaint(); } public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} } public void run() { while(true) { try { Thread.sleep(100); } catch (Exception e) {} repaint(); } } } class Ball { private int x, y, vx, vy, r; public Ball(int x, int y, int vx, int vy) { this.x = x; this.y = y; this.vx = vx; this.vy = vy; r = 30; } public void draw(Graphics g) { g.fillOval(x, y, r, r); x += vx; y += vy; if(x < 0 || x > 457) vx = -vx; if(y < 0 || y > 433) vy = -vy; } }

    • ベストアンサー
    • Java
  • <identifier>エラーについて

    paintメソッド内ではなく、public class直下で図形の表示をしなければならないのですが、どうしても <identifier>がありません とエラーが出てしまいます; 調べてみたのですがわからなかったので指摘をお願いしますorz プログラムは以下の通りです /* <applet code="Reidai25kai.class" width=500 height=600> </applet> */ import java.applet.Applet; import java.awt.*; public class kadaiM extends Applet implements Runnable { int xichi = 100, yichi = 250, xido = 3, yido = 4; int i, mx=225, my=495; int[] bx = {100,150,200,250,300,350, 100,150,200,250,300,350, 100,150,200,250,300,350}; int[] by = {250,250,250,250,250,250, 300,300,300,300,300,300, 350,350,350,350,350,350}; g.setColor(new Color( 0, 255, 0)); g.fillRect(mx, my, mx+50, my+10); g.drawRect(0, 0, 450, 550); for(i=0; i<18; i++) { g.setColor(new Color(255,170,10*i)); g.fillOval(bx[i]-20,by[i]-20,50,50); } public void init() { Thread hyoji; hyoji = new Thread(this); hyoji.start(); } public void run() { for( ; ; ) { try { xichi = xichi + xido; //ボールx座標の更新 yichi = yichi + yido; //ボールy座標の更新 repaint(); if(xichi < 10 || xichi > 440)xido = -xido; //横方向跳ね返り if(yichi < 10 || yichi > 540)yido = -yido; //縦方向跳ね返り Thread.sleep(30); } catch(InterruptedException e){} } } public void paint(Graphics g) { g.setColor(new Color( 0, 0, 255)); g.fillOval(xichi-10, yichi-10, 20, 20); } }

  • Java Applet での虫食い算での質問

    初めて利用させていただきます。 今、課題で虫食い算のプログラムを作成しているのですが、うまく動作してくれません。 もしよろしければご指摘をしてもらえればと思い書き込みのほうをさせていただきます。 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Event; import java.awt.Font; import java.awt.Graphics; import java.awt.Panel; import java.applet.Applet; public class musikuizan_1 extends Applet { int A, B; int cnt; int sub(int n,int m) { int i; for (i=1; i<m; i++) n /= 10; return n % 10; } void puzzle() { int a; int b; int c; int d; int e; for (a=1; a<=99; a++) { for (b=1; b<=99; b++) { c = a * (b % 10); d = a * (b / 10); e = a * b; if (c>=100 && c<=999 && d>=10 && d<=99 && e>=100 && e<=999) /*桁数調整*/ { if (sub(b,1)==3 && sub(c,2)==1 && sub(d,2)==8) /*穴埋めされてある部分の数*/ { A = a; B = b; cnt++; } } } } } public void init() { setBackground(new Color(150,180,200)); setLayout(new BorderLayout()); Panel psouth = new Panel(); psouth.add(new Button("実行")); add("South", psouth); } public void paint(Graphics g) { int i, c, d, e; for (i=1; i<=2; i++) { g.drawRect(97-i*20, 5,16,16); g.drawRect(97-i*20,25,16,16); g.drawRect(77-i*20,65,16,16); } for (i=1; i<=3; i++) { g.drawRect(97-i*20,45,16,16); g.drawRect(97-i*20,85,16,16); } for (i=1; i<=4; i++) g.drawLine(30,43,100,43); g.drawLine(30,83,100,83); g.setFont(new Font("Helvetica",Font.BOLD,18)); g.drawString("x",40, 40); if (A == 0) { g.drawString("3",60, 40); g.drawString("1",60, 60); g.drawString("8",60, 80); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = ",30,115); } else { c = A * (B % 10); d = A * (B / 10); e = A * B; g.setFont(new Font("Helvetica",Font.BOLD,18)); for (i=1; i<=2; i++) { g.drawString(Integer.toString(sub(A,i)),100-i*20, 20); g.drawString(Integer.toString(sub(B,i)),100-i*20, 40); } for (i=1; i<=3; i++) { g.drawString(Integer.toString(sub(c,i)),100-i*20, 60); g.drawString(Integer.toString(sub(d,i)), 80-i*20, 80); } for (i=1; i<=4; i++) g.drawString(Integer.toString(sub(e,i)),100-i*20,100); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = "+Integer.toString(cnt),30,115); } } public boolean action(Event e, Object arg) { if ("実行".equals(arg)) { if (A == 0) puzzle(); else A = cnt = 0; repaint(); } return true; } }

    • ベストアンサー
    • Java
  • Start:アプレットは初期化されていません、、というエラーが出る。

    アプレットを勉強している初心者です。 落ちものゲームを作ろうと思い、本に載っているサンプルを分かるところから書いていこうとしています。 そうしたら(もちろんまだ全体の途中、というか始めたばかりですが)タイトルのようなエラーが出てしまいました。 今の段階でのソースを載せるので、もし分かる方がいたら、よろしくお願いします。 import java.applet.Applet; import java.awt.*; import java.util.*; import java.awt.event.*; public class jisaku extends Applet{ int square = 8; int nw = 23; int nh = 24;//ブロック位置の最大数 int block[][] = new int[4][4];//動くブロックの形 int board[][] = new int[nh+1][nw+1];//盤面にあるブロックの有無 Dimension d;//表示スクリーン Image offs;//オフスクリーン Graphics grf; public void init(){ //********盤面のブロックの初期化(board[][]の初期化(=フィールドと枠)だけ)************ //フィールドにはブロックはない for(int i = 0; i <= nh; i++){ for(int j = 0; i <= nw; j++){ board[i][j] = 0;//盤面にはブロックはない } } //左右下の固定ブロック for(int i = 0; i <= nh; i++){ for(int j = 0; j <= nw; j++){ board[i][j] = 2; board[i][nw-j] = 1; } } for(int i = 0; i < 3; i++){ for(int j = 0; j <= nw; j++){ board[nh-i][j] = 2; } } //************オフスクリーンの設定********* d = getSize(); offs = createImage(d.width, d.height); grf = offs.getGraphics(); } public void paint(Graphics g){ update(g); } public void update(Graphics g){ //[grf]はオフスクリーンのグラフィックスオブジェクト(というのかな?) //バックをオレンジで塗る grf.setColor(Color.orange); grf.fillRect(0,0,d.width,d.height); //ブロックを描く grf.setColor(Color.blue); for(int i = 0; i <= nh; i++){ for(int j = 0; j <= nw; j++){ if(board[i][j] >= 1){ grf.fillRect(j*square, i*square, square, square); } } } //左右下の枠を描く grf.setColor(Color.red); for(int i = 0; i <= nh; i++){ for(int j = 0; j <3; j++){ grf.fillRect(j*square, i*square, square, square); grf.fillRect((nw-j)*square, i*square, square, square); } } for(int i =0; i < 3; i++){ for(int j = 0; j <= nw; j++){ grf.fillRect(j*square, (nh-i)*square, square, square); } } g.drawImage(offs, 0, 0, this); } }

    • ベストアンサー
    • Java
  • シンボルが見つかりませんというエラーが理解できません。

    以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.File; public class janken extends Applet implements Runnable, ActionListener { private static final int EXTERNAL_BUFFER_SIZE = 128000; Image image[] = new Image[3]; Thread t; int index1 = 0; int index2 = 0; String msg = ""; String msg1 = ""; boolean state = false; Button b1 = new Button("ぐー"); Button b2 = new Button("ちょき"); Button b3 = new Button("ぱー"); public void init(){ for(int i = 0; i<=2; i++){ img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG"); } add(b1); add(b2); add(b3); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); msg1 = "結果は・・"; } public void paint(Graphics g){ g.drawImage(img[index1],350,30,this); g.drawImage(img[index2],695,30,this); g.drawString("コンピューター",420,300); g.drawString("あなた",800,300); g.drawString(msg,630,320); g.drawString(msg1,550,320); } public void start(){ state = true; t = new Thread(this); t.start(); } public void run(){ while(state){ index1++; if(index1 == 3){ index1 = 0; } index2++; if(index2 == 3){ index2 = 0; } repaint(); try { Thread.sleep(60); }catch(InterruptedException e) { } } } public void actionPerformed(ActionEvent e){ if(state == false) { start(); return; } state = false; if(e.getSource() == b1) { msg = "ぐー"; index2 = 0; } else if(e.getSource() == b2){ msg = "ちょき"; index2 = 1; } else if(e.getSource() == b3){ msg = "ぱー"; index2 = 2; } check(); repaint(); } public void check() { if(index1 == index2) msg ="あいこ"; else if (index1 == 0) { if(index2 == 2) msg="あなたの勝ち"; else msg ="あなたの負け"; } else if(index1 == 1) { if(index2 == 0) msg="あなたの勝ち"; else msg="あなたの負け"; } else if(index1 == 2) { if(index2 == 1) msg="あなたの勝ち"; else msg="あなたの負け"; } } }

    • ベストアンサー
    • Java
  • 配列のエラーに関して

    java言語を用いて,Householder変換を用いた固有値の数値計算に挑戦してみました.しかし,次のようなエラーが発生し上手くいきません.どなたかこの問題を解決するためにお力をかしていただけないでしょうか. ----------エラー内容-------------------------------------------------------------------------------- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at Out.Mhouse(House.java:90) at House.main(House.java:10) ---------------------------------------------------------------------------------------------------- //Householder変換 public class House{ public static void main(String[] args){ double[][] A = new double[3][3]; int n = A.length; Out out = new Out(); for(int i = 0;i < n;i++){ for(int j = 0;j < n;j++){ if(j < n-1){ System.out.print(out.Mhouse(A)[i][j] + " "); }else if (j == n-1) System.out.println(out.Mhouse(A)[i][j]); }; }; }; }; class Out{ double[][] outpro(double[] x){ int n; n = x.length; double[][] A = new double[n][n]; for(int i = 0;i < n;i++ ){ for(int j = 0;j < n;j++){ A[i][j] = x[i] * x[j]; } } return A; }; double[][] Msca(double a,double[][] A){ int n = A.length; for(int i = 0;i < n; i++){ for(int j = 0;j < n;j++){ A[i][j] = a * A[i][j]; } } return A; }; double selfpro(double[] x){ double a = 0; int n = x.length; for(int i = 0;i < n; i++){ a = a + x[i] * x[i]; }; return a; }; double[] minus(double[] x, double[] y){ int n = x.length; double[] z = new double[n]; for(int i = 0;i < n;i++){ z[i] = x[i] - y[i]; }; return z; }; double[][] house_1(double[] x){ int n = x.length; double[][] A = new double[n][n]; for(int i=0;i < n;i++){ for(int j = 0;j < n;j++){ if(i == j){ A[i][j] = 1 - Msca(2/selfpro(x),outpro(x))[i][j]; }else{ A[i][j] = - Msca(2/selfpro(x),outpro(x))[i][j]; }; }; }; return A; }; double[][] house_2(double[] x){ double[][] z = new double[1][1]; z[1][1] = 1 - 2; return z; }; double[][] Mhouse(double[][] A){ int n = A.length; double[][] H = new double[n][n]; for(int i = 0;i < n;i++){ double[] x = new double[n-i]; double[] y = new double[n-i]; double[][][] L = new double[i][n-i][n-i]; for(int j = 0;j < n-i;j++){ x[j] = A[i][i+j]; if(j == 0){ y[j] = 1; }else{ y[j] = 0; }; x[j] = y[j] - x[j]; }; if(i < n-1){ L[i] = house_1(x); for(int k = 0;k < n-i;k++){ for(int l = 0;l < n-i;l++){ H[i+k][i+l] = L[i][k][l]; }; }; }else if(i == n-1){ L[i] = house_2(x); for(int k = 0;k < n-i;k++){ for(int l = 0;l < n-i;l++){ H[i+k][i+l] = L[i][k][l]; }; }; }; }; double[][] B = new double[n][n]; for(int i = 0;i < n;i++){ for(int j = 0;j < n;j++){ for(int k = 0;k < n;k++){ B[i][j] = H[i][k] * A[k][j]; }; }; }; return A; }; };

    • ベストアンサー
    • Java
  • javaのJPanel重ね時、repaint

    JPanelの上にJPanelを重ね、上のJPanelを透過させました。 この状態で両方のパネルでstartを行います。 下記の結果では、両方が動いています。 目標として、片方のパネルが描写をのこし、片方のパネルが再描写するのが理想です。 誰かお教えください。 import javax.swing.JFrame; import java.awt.*; public class Test extends Object { public static void main(String[] arguments){ TestViewU Upanel = new TestViewU();//上のパネル TestViewS Spanel = new TestViewS();//下のパネル Upanel.setLocation(new Point(0, 0)); Upanel.setLayout(null); Upanel.setOpaque(false); Spanel.setLocation(new Point(0, 0)); Spanel.setLayout(null); Spanel.add(Upanel); Upanel.setSize(new Dimension(800, 600)); Spanel.setSize(new Dimension(800, 600)); JFrame aWindow; aWindow = new JFrame("MVC-"); aWindow.getContentPane().add(Spanel); aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); aWindow.setSize(800, 600); aWindow.setVisible(true); Spanel.start(); Upanel.start(); } } import java.awt.*; import javax.swing.*; public class TestViewS extends JPanel implements Runnable{ static Thread thread; private static int interval_time = 5; int a = 100; int b = 100; public TestViewS(){ setBackground(Color.WHITE); } public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.BLUE); g.fillRect(a, b, 10, 10); } void start() { thread = new Thread(this); thread.start(); } public void run() { boolean checkA = true; boolean checkB = true; Thread thisThread = Thread.currentThread(); while (thisThread == thread) { try { if(checkA && checkB){ a++;} else if(!checkA && checkB){ b++;} else if(!checkA && !checkB){ a--;} else if(checkA && !checkB){ b--;} if(a == 701){ checkA = !checkA; a--;} else if(a == 99){ checkA = !checkA; a++;} if(b == 501){ checkB = !checkB; b--;} else if(b == 99){ checkB = !checkB; b++;} repaint(); Thread.sleep(interval_time); } catch (InterruptedException ie) { thread = null; break;}} } } import java.awt.*; import javax.swing.*; public class TestViewU extends JPanel implements Runnable{ static Thread thread; private static int interval_time = 5; int a = 200; int b = 200; public TestViewU(){ } public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.RED); g.fillRect(a, b, 10, 10); } void start() { thread = new Thread(this); thread.start(); } public void run() { boolean checkA = true; boolean checkB = true; Thread thisThread = Thread.currentThread(); while (thisThread == thread) { try { if(checkA && checkB){ a++;} else if(!checkA && checkB){ b++;} else if(!checkA && !checkB){ a--;} else if(checkA && !checkB){ b--;} if(a == 601){ checkA = !checkA; a--;} else if(a == 199){ checkA = !checkA; a++;} if(b == 401){ checkB = !checkB; b--;} else if(b == 199){ checkB = !checkB; b++;} repaint(a, b, 10, 10); Thread.sleep(interval_time); } catch (InterruptedException ie) { thread = null; break;}} } }