Может ли Component
s быть добавлен к группам в GroupLayout
динамически, после того, как setHorizontalGroup()
и setVerticalGroup()
были вызваны, не перезагружая компоновку? Я работаю над графическим интерфейсом проекта, который поможет студентам найти лучший способ составить свои недельные расписания занятий. Это предполагает ввод информации о времени класса и т. Д. Для неизвестного количества классов. Конечно, я не могу просто добавить произвольно большое количество форм для того, чтобы пользователь мог ввести информацию и сказать «никто не может рассматривать больше, чем это число классов», поэтому пользователь должен иметь возможность добавлять новые формы на их. Я могу создать формы, но я не могу найти способ успешно добавить их в GroupLayout
в окне без повторного вызова setHorizontalGroup(...)
или setVerticalGroup(...)
, которые записывают за предыдущие Group
s, а не добавляют к ним. Это соответствующая часть кода я в настоящее время (комментировал для удобочитаемости):Можно добавить компоненты в группы в GroupLayout динамически?
private static void createAndShowGUI() {
//Create window and assign an empty GroupLayout to it
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.getContentPane().setLayout(layout);
/*WeekPanel extends JPanel, and is the "form" the user enters data into.
In essence, it's a JPanel with a series of JTextFields.*/
WeekPanel panel1 = new WeekPanel();
WeekPanel panel2 = new WeekPanel();
//The layout code below places two WeekPanels in the window, one on top of the other
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(panel1)
.addComponent(panel2)));
layout.setVerticalGroup(layout.createSequentialGroup()
.addComponent(panel1)
.addComponent(panel2));
/*I would like to add a component to the layout here as proof of concept.*/
frame.pack();
frame.setVisible(true);
}
Я попытался назвать frame.add([some component])
как раз перед frame.pack()
, но он никогда не делает никакой видимой разницы. Я просмотрел официальную документацию для GroupLayout, и я не вижу возможности доступа или изменения горизонтального/вертикального Group
s в GroupLayout
или даже поля, ссылающегося на те Group
s, если на то пошло. У меня полная потеря относительно того, что делать здесь. Я хочу избежать изучения нового типа Layout
, если это вообще возможно, но я начинаю опасаться, что мне придется (или, что еще хуже, то, что я пытаюсь сделать, с чего начать) ,
* «Это включает в себя ввод информации о времени класса, и т.д. для неизвестного числа классов.» * Похоже, работа для 'JTable'. * «Я хочу избежать изучения нового типа« Макет », если это вообще возможно». Необходимо иметь рабочие знания о нескольких макетах, а также о том, как их объединить, прежде чем, скорее всего, вы добьетесь успеха завершить любое нетривиальное приложение на основе графического интерфейса. (Даже если основная часть информации отображается в 'JTable'.) –