Я хочу создать два контейнера JPanel
, вложенных в другую панель, но почему он ничего не показывает в качестве кода ниже? Кажется, что мои две панели не на панели ABC
?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();'. Это просто пустая панель, она ничего не покажет. Измените цвет фона или добавьте к нему некоторые компоненты. –
В 'JPanel one = new JPanel' вы не создаете экземпляры своих новых JPanels. Вы должны называть конструкторы 'one' и' two' – jr593
1) Использовать логическую и согласованную форму отступающих кодовых строк и блоков. Отступы предназначены для того, чтобы поток кода стал проще следовать! 2) Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 3) Не смешивайте компоненты Swing и AWT без уважительной причины. В этом случае нет веской причины. Измените «Frame frame» на 'JFrame frame;' и измените другие биты кода, как это было предупреждено компилятором. 4) В этом случае нет веских оснований для расширения «JPanel». .. –