Rechtecke auf ein JPanel
Ich habe eine JScrollPane und oben drauf habe ich ein JPanel mit dem Namen 'panel1'.
Ich möchte einige Rechtecke gezeichnet werden, der auf diesem JPanel.
Habe ich eine Klasse namens DrawRectPanel erweitert JPanel und nicht alle die Zeichnung Zeug.
Das problem ist, dass ich versuchte, ziehen Sie die Rechtecke auf panel1, indem Sie den folgenden code :
panel1.add(new DrawRectPanel());
aber nichts erschien auf panel1
dann habe ich versucht, nur als test, um die Klasse DrawRectPanel :
JFrame frame = new JFrame();
frame.setSize(1000, 500);
Container contentPane = frame.getContentPane();
contentPane.add(new DrawRectPanel());
frame.show();
Funktionierte, und produzierte die Zeichnungen, sondern in einem eigenen JFrame
Wie kann ich zeichnen Sie die Rechtecke auf panel1 ?
Vielen Dank im Voraus.
BEARBEITEN :
code für DrawRectPanel
public class DrawRectPanel extends JPanel {
DrawRectPanel() {
Dimension g = new Dimension(400,400);
this.setPreferredSize(g);
System.out.println("label 1");
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println("label 2");
g.setColor(Color.red);
g.fillRect(20, 10, 80, 30);
}
}
nur Etikett 1 gedruckt ist, auf dem Bildschirm
Wenn Sie zeigen nicht den code für
DrawRectPanel
gibt es keine chance, jemand wirklich helfen können. Ich würde vermuten obwohl: es gibt keine bevorzugte Größe für DrawRectPanel, ist es?Ein SSCCE ist weit mehr als nützlich, mehr code-snippets. Bitte Lesen Sie die verlinkten Artikel.
InformationsquelleAutor infoSyStem | 2011-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
immer noch keine Ahnung,
beispielsweise
InformationsquelleAutor mKorbel
anstatt
sollten Sie tun
Weil Sie bereits über neue
DrawRectPanel
in panel1. Aber in Ihrem code, den Sie hinzufügen einer anderen Instanz vonDrawRectPanel
imcontentPane
. Und nie Hinzugefügtpanel1
in keiner Ihrercontainer
.ich bearbeitete die Antwort. nun sollte dies funktionieren.
zuerst sollte ich hinzufügen panel1 (das überschreibt paintcomponent Funktion) auf einem scrollpane, damit ich schreiben soll scrollpane.add(panel1) , wenn ich dies tun, wird nur der Konstruktor von panel1 aufgerufen wird und nicht die paintcomponent-Funktion selbst, wissen Sie, warum ?
Sie können manuell aufrufen paintcomponent von panel1.repaint();panel1.validate();
poste bitte deinen vollständigen code. dann, nachdem ich Debuggen kann.
InformationsquelleAutor gtiwari333
um Ihr problem zu beheben, ändern Sie die "paintComponent" zu "malen", wenn das Fenster aktualisiert sich automatisch, sollte es funktionieren.
InformationsquelleAutor Funny Geeks