Добавление нескольких jPanels в jFrame
Я хочу добавить две jPanels в JFrame бок о бок. два поля являются jpanels, а внешний ящик - jframe ![enter image description here]()
У меня есть эти строки кода. У меня есть один класс под названием seatinPanel, который расширяет JPanel, и внутри этого класса у меня есть конструктор и один метод под названием utilityButtons, который возвращает объект JPanel. Я хочу, чтобы утилита JPanel была на правой стороне. код, который у меня здесь, показывает только utillityButtons JPanel, когда он запускается.
public guiCreator()
{
setTitle("Passenger Seats");
//setSize(500, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
seatingPanel seatingPanel1 = new seatingPanel();//need to declare it here separately so we can add the utilityButtons
contentPane.add(seatingPanel1); //adding the seats
contentPane.add(seatingPanel1.utilityButtons());//adding the utility buttons
pack();//Causes this Window to be sized to fit the preferred size and layouts of its subcomponents
setVisible(true);
}
Ответы
Ответ 1
Самый гибкий LayoutManager, который я бы рекомендовал, - BoxLayout.
Вы можете сделать следующее:
JPanel container = new JPanel();
container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
//panel1.set[Preferred/Maximum/Minimum]Size()
container.add(panel1);
container.add(panel2);
затем добавьте контейнер для объекта к вашему компоненту кадра.
Ответ 2
Вам нужно прочитать и узнать о менеджерах макетов, которые может предложить Swing. В вашей ситуации это поможет узнать, что JPrame contentPane использует BorderLayout по умолчанию, и вы можете добавить свой более крупный центр JPanel BorderLayout.CENTER и другой JPanel BorderLayout.EAST. Подробнее можно найти здесь: Укладка компонентов в контейнере
Изменить 1
Эндрю Томпсон уже показал вам немного о менеджерах макетов в своем коде в вашем предыдущем сообщении: почему мои кнопки не отображаются?. Опять же, пожалуйста, прочитайте учебник, чтобы лучше понять их.