2016-05-19 8 views
-1

大丈夫です。なぜ私の四角形を描画するために使用しようとしているポイントの値が得られないのですか?私はそれを把握しようとしていたが、私はそれを得るように見えない。誰かが私のコードを見て、何が間違っているのか教えてください。グラフィックスとオブジェクト

import java.awt.Graphics; 
import java.awt.Color; 
import javax.swing.JPanel; 


import java.util.Random; 
import java.awt.*; 


class Square{ 

    int x1, y1, x3, y3; 

    int red, green, blue; 


    Square(){}; 

    public double squareArea() 
    { 

     return Math.abs(x3 - x1) * Math.abs(y3 - y1); 
    } 

    public void setUpperLeft (int ulx, int uly) 
    { 
     x1 = ulx; 
     y1 = uly; 
    } 

    public void setLowRight (int lrx, int lry) 
    { 
     x3 = lrx; 
     y3 = lry; 
    } 

    void setRed(int c){red = c;} 

    void setGreen (int c) {green = c;} 

    void setBlue (int c){blue = c;} 

    void setSquareData(int x1, int y1, int x3, int y3, int red, int green, int blue) 
    { 
     Random r = new Random(); 
     Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); 

     for (int i = 0; i < 100; i++) 
     { 
      x1 = r.nextInt(screenSize.width); 
      y1 = r.nextInt(screenSize.height); 
      //s[i].setUpperLeft(x, y); 

      x3 = r.nextInt(screenSize.width); 
      y3 = r.nextInt(screenSize.height); 
      //s[i*2].setLowRight(x2, y2); 

      red = r.nextInt(255) * 2; 
      green = r.nextInt(255) * 2; 
      blue = r.nextInt(255) * 3; 


     } 
    } 

    int getRed(){ return red;} 

    int getGreen() {return green;} 

    int getBlue(){return blue;} 


    int getx1() 
    { 
     return x1; 
    } 

    int gety1() 
    { 
     return y1; 
    } 

    int getx3() 
    { 
     return x3; 
    } 

    int gety3() 
    { 
     return y3; 
    } 


} 

マイドロークラス

import java.util.Random; 
import java.awt.*; 
import java.awt.Graphics; 
import java.awt.Color; 
import javax.swing.JPanel; 

class Draw extends JPanel { 
> 
>  public void paintComponent(Graphics g) {    
     Color c; 
>  int red, green, blue;   
     int x1, y1, x2, y2; 
> 
>  Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();  
>   
>      int screenHeight = screenSize.height; 
>      int screenWidth = screenSize.width; 
> 
>    Square s = new Square(); 
>   
>    Random r = new Random(); 
> 
>    for(int i = 0; i < 100; i++) 
>    { 
>    Square[] sq = new Square[100]; 
> 
>    x1 = s.getx1(); 
>         y1 = s.gety1(); 
>         x2 = s.getx3(); 
>         y2 = s.gety3(); 
> 
>         red = s.getRed(); 
>         green = s.getGreen(); 
>         blue = s.getBlue(); 
> 
>         c = new Color(s.getRed(), s.getGreen(), s.getBlue()); 
>         g.setColor(c); 
>         g.drawLine(x1,y1,x2,y2); 
> 
>         g.fillRect(x1, y1, x2, y2); 
>    
>    
>    
>    } 
> 
> 
> 
> 
>  } 
> 
> } 

私の主なクラス

import javax.swing.JFrame; 
import java.awt.*; 
class Main{ 

public static void main(String[] args) 
{ 
    Square s = new Square(); 
      JFrame frame = new JFrame("Squares"); 
      Draw myDraw = new Draw(); 
      Dimension screenSize =   Toolkit.getDefaultToolkit().getScreenSize(); 

      int screenHeight = screenSize.height; 
      int screenWidth = screenSize.width; 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setSize(screenWidth, screenHeight); 
      frame.getContentPane().add(myDraw); 
      frame.setVisible(true); 

    System.out.printf("Poop: %d", s.getx1()); // was testing the values 

} }

マイ広場クラスをそれを把握することができます誰にどうもありがとう

+0

あなたはあなたの質問で、より正確になりたいことがあり、よく、あるいは少なくとも、質問を行います。 は、だからここに四角形を描画します例です。 – UDKOX

+0

なぜ何も描画されないのですが、なぜ自分の値に値が入っていないのですか? – juanmindset

+0

何も値を設定していないので、値はありません。 – FredK

答えて

1

paintComponent()メソッドは、サイズがゼロの新しいSquare( "s"と呼ばれる)を作成します。ゼロサイズの10,000個以上の正方形を作成し、元の正方形(サイズゼロのもの)を100回描画しようとします。

paintComponent()メソッドでANY Squareインスタンスを作成しないでください。これを書いたように、ユーザーがフレームのサイズを変更すると、何百万の四角形が作成され、メソッドが返ってきたら直ちに破棄されます。

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.Graphics; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.util.ArrayList; 
import java.util.Random; 

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

public class Draw extends JPanel { 

    JFrame   frame; 
    ArrayList<Item> items = new ArrayList<>(); 
    static Random r  = new Random(); 

    public Draw() { 
     setPreferredSize(new Dimension(300, 300)); 
    } 

    public void addItem(Item s) { 
     items.add(s); 
     repaint(); 
    } 

    /** 
    * Adds a Item of random size and color. 
    */ 
    public void addItem() { 
     int w = getWidth(); 
     int h = getHeight(); 

     int sx = r.nextInt(w); 
     int sw = sx + r.nextInt(w - sx); 

     int sy = r.nextInt(h); 
     int sh = sy + r.nextInt(h - sy); 
     int red = r.nextInt(255); 
     int green = r.nextInt(255); 
     int blue = r.nextInt(255); 
     Color c = new Color(red, green, blue); 
     Item s = new Item(sx, sy, sw, sh, c); 
     addItem(s); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     for (Item s : items) { 
     g.setColor(s.c); 
     g.fillRect(s.x, s.y, s.width, s.height); 
     }; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      JFrame jf = new JFrame(); 
      jf.getContentPane().setLayout(new FlowLayout()); 
      jf.addWindowListener(new WindowAdapter() { 
       @Override 
       public void windowClosing(WindowEvent arg0) { 
        System.exit(0); 
       } 
      }); 
      Draw t = new Draw(); 
      jf.add(t); 
      jf.pack(); 
      jf.setVisible(true); 

      // Now add some rectangles 

      for (int i = 0; i < 10; i++) { 
       t.addItem(); 
      } 
     } 
     }); 
    } 

    class Item { 
     int x; 
     int y; 
     int width; 
     int height; 
     Color c; 

     public Item(int x1, int y1, int w, int h, Color c) { 
     x = x1; 
     y = y1; 
     width = w; 
     height = h; 
     this.c = c; 
     } 
    } 
} 
関連する問題