Hinzufügen JPanel auf JFrame
Ich habe ein Programm, in dem ein JPanel Hinzugefügt wird ein JFrame:
public class Test{
Test2 test = new Test2();
JFrame frame = new JFrame();
Test(){
...
frame.setLayout(new BorderLayout());
frame.add(test, BorderLayout.CENTER);
...
}
//main
...
}
public class Test2{
JPanel test2 = new JPanel();
Test2(){
...
}
}
Bekomme ich eine Fehlermeldung und fragt mich, auf Typ ändern von 'panel' auf 'Komponente'. Ich behebe ich diesen Fehler?
Sie will mich zu tun: die Komponente panel = new Komponente();
- Benötigen Sie mehr code zu posten, da was du gepostet hast, sollte nur funktionieren
- JPanel ist eine Komponente. Funktioniert der code, den Sie gerade eingefügt, geben Sie auch diesen Fehler?
- Es klingt wie Sie sind falsch interpretiert die Fehlermeldung; was ist die genaue Fehlermeldung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
JFrame
direkt inTest
? Ich Tue immer das, vielleicht ist es eine schlechte Angewohnheit ? Von Ihnen positiv bewertet werden.JFrame
? Und der Grund, warum Sie nicht verlängern, in diesem Beispiel war nur, weil in diesem Beispiel nicht ändern, auch eine einfache Eigenschaften ?ui
panel, wieder eher als erweitern. Ich wirklich lieber nicht zu verlängern, es sei denn, sowas wie custom-painting.tun es einfach
Anstatt Ihre Klasse Test2 enthalten ein JPanel, sollten Sie es JPanel-Unterklasse:
Mehr details:
JPanel ist eine Unterklasse von Component, so dass jede Methode, die eine Komponente als ein argument kann auch ein JPanel als argument.
Älteren Versionen nicht geben Ihnen die Möglichkeit, direkt auf einem JFrame; Sie hatten JFrame.getContentPane().add(Component). Wenn Sie eine ältere version verwenden, dies könnte auch ein Thema sein. Neuere Versionen von Java lassen Sie Sie nennen JFrame.add(Komponente) direkt.
Sind Sie sicher?
test
ist NICHT Bestandteil!Zu tun, was Sie versuchen zu tun, sollten Sie lassen Sie
Test2
erweiternJPanel
!Ihre
Test2
Klasse ist nicht einComponent
es hat eineComponent
das ist ein Unterschied.Entweder Sie tun etwas, wie
nachdem Sie eingeführt, ein getter für die Tafel in Ihrer Klasse, oder Sie stellen sicher, dass Ihre
Test2
Klasse wird einComponent
(z.B. durch die Erweiterung derJPanel
)