2016-08-30 8 views
0

私の意図は、正方形を作成して私のメインクラス(2スレッドCanvasとJFrameのクラス)が動作しないように見えます(何もしません)...実装するには実行可能な方法ですか、それとも表示されるクラスと同じクラスに四角形を作成する必要がありますか?私は正方形を作成し、私のメイン関数で呼び出すことができるクラスを作成しようとしています

PD:私の下手な英語

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Graphics; 

public class Quadrat extends Canvas{ 

    public static int x; 
    public static int y; 
    public static int status; 

    private static int totalX; 
    private static int totalY; 

    public static boolean isRed; 
    public static boolean isBlue; 

    public Quadrat(int x, int y, int ampleTotal, int totalX, boolean isRed, boolean isBlue, int status) { 
     this.x = x; 
     this.y = y; 
     this.totalX = totalX; 
     this.totalY = totalY; 
     this.isRed = isRed; 
     this.isBlue = isBlue; 
     this.status = status; 
    } 

    public void paint(Graphics g) { 
     if (isRed) { 
      g.setColor(Color.RED); 
     } 
     else { 
      g.setColor(Color.BLUE); 
     } 

     g.fillRect(x, y, totalX/3 , totalY/3); 
    } 
    public static void main() { 
     System.out.println("Is working"); 
    } 
} 

のため申し訳ありませんがここで私はメインクラスでそれを初期化する場所です:

public void paint(Graphics g) { 
    /* 
    * Border 
    */ 
    g.setColor(Color.BLACK); 
    g.fillRect(AMPLE/3, 0, GRUIX, ALTURA); 
    g.fillRect((AMPLE/3) * 2, 0, GRUIX, ALTURA); 
    g.fillRect(0, ALTURA/3, AMPLE, GRUIX); 
    g.fillRect(0, (ALTURA/3) * 2, AMPLE, GRUIX); 

    /* 
    * Square 
    */ 

    Quadrat quadrat = new Quadrat(0, 0, AMPLE, ALTURA, true, false, 0); 

} 
+0

なぜすべて静的にしたのですか? –

+0

メインクラスのコード全体を投稿できますか? – Daniel

+0

主なクラスは、いくつかのメソッド(それらのpaint()の1つ)とキャンバスを拡張します –

答えて

0

Quadrat.java

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Graphics; 

public class Quadrat extends Canvas { 

    public int x; 
    public int y; 
    public int status; 

    private int totalX; 
    private int totalY; 

    public boolean isRed; 
    public boolean isBlue; 

    public Quadrat(int x, int y, int totalX, int totalY, boolean isRed, boolean isBlue, int status) { 
     this.x = x; 
     this.y = y; 
     this.totalX = totalX; 
     this.totalY = totalY; 
     this.isRed = isRed; 
     this.isBlue = isBlue; 
     this.status = status; 
    } 

    public void paint(Graphics g) { 
     if (isRed) { 
      g.setColor(Color.RED); 
     } else { 
      g.setColor(Color.BLUE); 
     } 

     g.fillRect(x, y, totalX, totalY); 
    } 
} 

MainCanvas.java

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Graphics; 

public class MainCanvas extends Canvas { 

    private Quadrat quadrat; 

    private int AMPLE = 10; 
    private int GRUIX = 300; 
    private int ALTURA = 300; 

    public MainCanvas() { 
     quadrat = new Quadrat(0, 0, 100, 100, true, false, 0); 
    } 

    public void paint(Graphics g) { 
     g.setColor(Color.BLACK); 
     g.fillRect(AMPLE/3, 0, GRUIX, ALTURA); 
     g.fillRect((AMPLE/3) * 2, 0, GRUIX, ALTURA); 
     g.fillRect(0, ALTURA/3, AMPLE, GRUIX); 
     g.fillRect(0, (ALTURA/3) * 2, AMPLE, GRUIX); 

     quadrat.paint(g); 
    } 

} 

MyPanel.java

import java.awt.BorderLayout; 
import java.awt.Graphics; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class MyPanel extends JPanel { 

private MainCanvas mainCanvas; 

public static void main(String[] args) { 
    MyPanel myPanel = new MyPanel(); 

    JFrame frame = new JFrame("Main"); 
    frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH); // maximize window 
    frame.setLayout(new BorderLayout()); 
    frame.add(myPanel, BorderLayout.CENTER); 
    frame.setVisible(true); 
} 

public MyPanel() { 
    mainCanvas = new MainCanvas(); 
} 

@Override 
protected void paintComponent(Graphics g) { 
    mainCanvas.paint(g); 
} 

}

0

Main.java

import java.awt.BorderLayout; 
import java.awt.Graphics; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Main extends JPanel { 

    private int AMPLE = 300; 
    private int ALTURA = 300; 

    private Quadrat quadrat = new Quadrat(0, 0, AMPLE, ALTURA, true, false, 0); 

    public static void main(String[] args) { 
     Main main = new Main(); 

     JFrame frame = new JFrame("Main"); 
     frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH); // maximize window 
     frame.setLayout(new BorderLayout()); 
     frame.add(main, BorderLayout.CENTER); 
     frame.setVisible(true); 
    } 

    @Override 
    protected void paintComponent(Graphics g) { 
     quadrat.paint(g); 
    } 

} 

クワタ。 java

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Graphics; 

public class Quadrat extends Canvas { 

    public int x; 
    public int y; 
    public int status; 

    private int totalX; 
    private int totalY; 

    public boolean isRed; 
    public boolean isBlue; 

    public Quadrat(int x, int y, int totalX, int totalY, boolean isRed, boolean isBlue, int status) { 
     this.x = x; 
     this.y = y; 
     this.totalX = totalX; 
     this.totalY = totalY; 
     this.isRed = isRed; 
     this.isBlue = isBlue; 
     this.status = status; 
    } 

    public void paint(Graphics g) { 
     if (isRed) { 
      g.setColor(Color.RED); 
     } else { 
      g.setColor(Color.BLUE); 
     } 

     g.fillRect(x, y, totalX, totalY); 
    } 
} 
+0

ありがとう!しかし、うまくいかないようです...あなたはどこでpaintComponentメソッドを呼び出しますか? –

+0

mainがJPanelを継承しているので、paintComponentが自動的に呼び出されます。私はコードをテストし、赤い四角形を描いています。 – Daniel

+0

私はMainCanvasがCanvasを拡張し、paintメソッドを持っている別の答えを投稿しました。 – Daniel

関連する問題