У меня есть JPanel внутри JFrame (но они не того же размера, и JFrame - полный экран). JPanel имеет FlowLayout, потому что я динамически добавляю туда небольшие квадраты (JPanels). Эти квадраты хорошо организованы (они перемещаются в следующий ряд, когда заканчивается JPanel), пока я не изменил размер JFrame - тогда эти квадраты показаны в одной строке, что делает их частью невидимыми (они исчезают по окончании экрана) и JPanel изменение размера. Что я могу сделать, чтобы сохранить постоянный размер JPanel? LayoutManager JFrame - это MigLayout.JPanel с FlowLayout изменяет размеры
0
A
ответ
2
Одно из возможных решений: переопределить метод getPreferredSize(), чтобы вернуть постоянное измерение.
public class MyPanel extends JPanel {
private static final int PANEL_W = 400;
private static final int PANEL_H = 300;
public MyPanel() {
// ... etc...
}
@Override
public Dimension getPreferredSize() {
return new Dimension(PANEL_W, PANEL_H);
}
// ... etc...
}
Проблема заключается в том, что я не могу определить ширину и высоту от продвижения, потому что я увеличил JPanel, чтобы разместить все возможное место для установки экрана (так что размер зависит от размера экрана). Чтобы быть более конкретным, мой JFrame делится на два столбца (согласно MigLayout): сначала имеет постоянный размер, а второй занимает все свободное место. – user1091733
Кроме того, этот код не работает. Даже если я определяю размер JPanel, он изменяется, когда я изменяю размер окна или вызываю функцию validate() на JFrame. – user1091733