# Einfaches Quadrat zeichnen



## ehlr (6. Jan 2012)

Hallo.

Wie kann ich auf einer Frame ein einfaches Quadrat zeichnen?


lg


----------



## dehlen (6. Jan 2012)

```
public class Quadrat extends JPanel{
 
      @Override
  public void paintComponent( Graphics g )
  {    
   
    g.drawRect(x, y, w, h);
  }
 
 
}
```

Das Panel dann einfach deinem Frame hinzufügen. Wenn du das Quadrat ausfüllen willst nimm fillRect() und wenn du eine anderen Farbe als schwarz haben willst kannst du das per g.setColor(Color.RED) z.B tun.


----------



## ehlr (6. Jan 2012)

```
@SuppressWarnings("serial")
public class Würfel extends JFrame {

	private JButton button;
	private JPanel panel;
	private Quadrat quadrat = new Quadrat();
	
	public Würfel() {
		super("Würfel");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
        pack();
        setLocationRelativeTo(null);
        setResizable(false);
        setVisible(true);
	}
	
	private void init() {
		panel = new JPanel();
		button = new JButton("Würfeln");
		panel.add(quadrat);
		panel.add(button);
		getContentPane().add(panel);
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
	                panel.repaint();
	            }
	        });
	}
   
}
```

Und


```
@SuppressWarnings("serial")
public class Quadrat extends JPanel{
 
      @Override
  public void paintComponent( Graphics g )
  {    
    setSize(150,150);	  
    int x1 = (int) (Math.random() * 255 + 1);
    int x2 = (int) (Math.random() * 255 + 1);
    int x3 = (int) (Math.random() * 255 + 1);
    g.drawRect(10,10,100,100);
    g.setColor(new Color(x1,x2,x3));
    g.fillRect(10,10,100,100);
  }
 
 
}
```


Es wird angezeigt, aber das Quadrat ist unter dem Button und an den Seiten abgeschnitten.
Wie kann ich es ganz anzeigen lassen und über den Button?


----------



## SlaterB (6. Jan 2012)

quadrat.setPreferredSize(new Dimension(150, 150));

und zwar nur einmal vor setVisible(true); nicht bei jedem painten, 
erscheint dann im Moment auch nicht übereinander, dazu das passende Layout wählen, z.B. FlowLayout,

zu allem immer Lehrbücher lesen und Beispiele anschauen, nicht nur andere fragen..,
das sind Standardthemen zu denen es genauestens sortiert ausführlichste passende Kapitel gibt,
mit Beispielen und allen drum und dran


----------



## ehlr (6. Jan 2012)

Danke.


Mit FlowLayout (center) bekomme ich die beiden Komponenten nur nebeneinender.
Wie kriege ich den Button unter das Panel vom Quadraht?


*// Habe es schon hinbekommen*


Wie kriege ich ein Label in das Quadraht?


----------



## dehlen (6. Jan 2012)

Wenn du nur was ausgeben lassen willst kannst du das mit g.drawString() machen ansonsten eben das Label auf deinen Frame packen.


----------



## ehlr (6. Jan 2012)

Habe es gerade hinbekommen!


----------

