Ich möchte zwei JPanel
Container verschachtelt in einem anderen Panel, aber warum zeigt es nichts als der Code unten? Es scheint, dass meine zwei Panels nicht auf dem ABC
Panel sind?BorderLayout - JPanel in JPanel
public class ABC extends JPanel
{
Frame frame;
public ABC(Frame frame)
{
super();
this.frame = frame;
setLayout(new BorderLayout());
JPanel one = new JPanel();
JPanel two = new JPanel();
add(one,BorderLayout.NORTH);
add(two,BorderLayout.CENTER);
one.setVisible(true);
two.setVisible(true);
}
public class one extends JPanel {
public one() {
setLayout(new FlowLayout(FlowLayout.LEFT));
createA();
setVisible(true);
}
}
public class two extends JPanel {
public two() {
setLayout(new FlowLayout(FlowLayout.LEFT));
createB();
setVisible(true);
}
}
private void createA(){
add(ButtonA);
add(ButtonAA);
add(ButtonAAA);
}
private void createB(){
add(ButtonB);
}
}
'JPanel two = new JPanel();'. Es ist nur ein leeres Panel, es wird nichts zeigen. Ändern Sie die Hintergrundfarbe oder fügen Sie einige Komponenten hinzu. –
In 'JPanel one = new JPanel' erstellen Sie keine Instanzen Ihrer neuen JPanels. Sie müssen die Konstruktoren 'one' und' two' tatsächlich aufrufen. – jr593
1) Verwenden Sie eine logische und konsistente Form der Einrückung von Codezeilen und -blöcken. Die Einrückung soll den Codefluss leichter nachvollziehen lassen! 2) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. 3) Mischen Sie Swing- und AWT-Komponenten nicht ohne Grund. In diesem Fall gibt es keinen guten Grund. Ändern Sie 'Frame frame;' in 'JFrame frame;' und optimieren Sie andere Codezeilen, wie vom Compiler gewarnt. 4) In diesem Fall besteht kein Grund, JPanel zu verlängern. .. –