Zeichnung einfache Rechtecke auf ein Jframe in java
Ich bin Verlängerung JFrame so:
public GameFrame() {
this.setBounds(30, 30, 500, 500);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initializeSquares();
}
private void initializeSquares(){
for(int i = 0; i < 5; i++){
this.getContentPane().add(new Square(i*10, i*10, 100, 100));
}
this.setVisible(true);
}
Jedoch nur ein Quadrat gezeichnet wird, auf dem Bildschirm, weiß jemand warum?
auch Meine Square-Klasse sieht wie folgt aus:
private int x;
private int y;
private int width;
private int height;
public Square(int x, int y, int width, int height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(x, y, width, height);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Des JFrame ' s contentPane verwendet BorderLayout standardmäßig. Wenn Sie fügen Sie ein Quadrat, um es, es wird standardmäßig Hinzugefügt BorderLayout.CENTER und deckt bis alle zuvor hinzugefügten Quadrate. Sie wollen Lesen, auf alle layout-Manager für Swing-GUIs.
Z.B., beginnen Sie hier: Auslegen von Komponenten innerhalb eines Containers
Aber nachdem ich dies gesagt, würde ich alles anders machen. Ich würde einfach ein JPanel und machen es in der Lage zu malen, mehrere Plätze. Zum Beispiel so etwas wie:
null
, aber es ist nicht zu empfehlen. Besser, etwas zu tun, wie im Beispiel oben.Fo absolute Positionierung, rufen Sie setLayout(null). Dann die icons gezeichnet an die position zurückgegeben, die durch Ihre getLocation () - Methode, so dass Sie vielleicht wollen, rufen Sie die setLocation() zuerst.
Sogar ich hatte ein Problem bei der Anzeige mehrerer Rechtecke auf ein jframe mit absoluten layout ich.e layout auf null gesetzt.
Trotzdem war ich immer Fragen, wie das Rechteck nicht angezeigt.Es sei denn, Sie explizit festlegen, die Grenzen auf dem Platz(JComponent) ,wird es nicht funktionieren.Obwohl der Platz hat die Lage übergeben im Konstruktor setbounds nur das Problem.Also das unten das Problem und dieses Problem ist für ein absolutes layout jframe.