Я хочу создать JPanel, куда я мог бы добавить текстовые поля min 1 max 12. (Поэтому я решил создать JPanel, в котором достаточно места для размещения 12 текстовых полей в 6 строках и 2 столбцах). Это зависит от того, сколько флажков будет установлено пользователем. Более того, эти текстовые поля должны отображаться сверху вниз с выравниванием по левому краю в этой JPanel. И каждый раз, когда один из этих флажков снимается, указанное текстовое поле удаляется из JPanel, а остальные перемещаются в это пустое место (смещаются вверх, чтобы закрыть его пространство).
Поэтому я создаю текстовое поле, если это необходимо, не создаю все в начале и устанавливаюVisible(false). Я думаю, что это лучшее решение.
Например:
//each JTexyField have the same size
JPanel panel = new JPanel(new LayoutManager()); //in my case BoxLayout
If(checkboxEuro == chcecked) {
JTextField fieldEuro = new JTextField();
panel.add(fieldEuro);
}
else if(checkbox2 == ...) panel.add(fieldDolar);
...
If(checkboxDolar = = unchecked) panel.remove(fieldDolar);
(И мне все равно, где эта кнопка появилась, главное, чтобы эта кнопка появилась после существующей кнопки в этой панели)
что я получаю
Если внизу в JPanel недостаточно места, LM должен добавить это текстовое поле в следующий столбец, начиная сверху. В этом примере 6x2, если бы я попытался добавить еще одно (7-е) текстовое поле, а в этом столбце не хватило места, оно должно было появиться во втором столбце сверху, но его нет. Когда я использую BoxLayout 7-е текстовое поле появилось половина на JPanel и половина выше.
Что я должен делать? Изменить Layout Manager, или, может быть, есть опция, которая не позволяет выходить за пределы JPanel? (это самое важное)
Я получаю это: и хочу это:
(Извините за язык - это первый раз)
---- Редактировать---
В случае, если мы неправильно поняли: Позвольте мне понять это правильно, я ищу метод/опцию в разных LM, которые помогают мне прокручивать строки, если нет места для добавления TextField (7-й в этом примере). ), следует переместить в следующий (столбец) вверху. Я не определил 2 столбца, но область этой JPanel позволила мне подумать, что есть пространство, которое содержит 2 столбца JTextField. Когда я добавляю все 12 полей и удаляю, например, второй, остальные из них должны сместиться вверх, чтобы покрыть это пространство.
1 4 2 5
2 5 remove 1 3 6
3 6 4