Как исправить компоненты графического интерфейса & ldquo; оставление & rdquo; их панели или занимают больше места, они должны?

Зачем использовать Regex только для проверки числа?

int n = -2000;

if(n >= -2055 && n <= 2055)
//Do something
else
//Do something else
0
задан Andrew Thompson 16 January 2019 в 17:31
поделиться

1 ответ

boardBckg.add(boardPanel, BorderLayout.CENTER);

Макетом JPanel по умолчанию является FlowLayout. Вы не можете просто указать ограничение BorderLayout при добавлении компонента на панель.

frame.add(boardBckg);
frame.add(menuPanel);

Макетом по умолчанию для (области содержимого) фрейма является BorderLayout. Если вы не укажете ограничение, компонент будет добавлен в BorderLayout.CENTER. Проблема в том, что в CENTER может быть добавлен только один компонент, поэтому вы видите только последний добавленный компонент.

frame.setVisible(true);

Компонент должен быть добавлен в кадр ДО того, как кадр будет упакован и сделан видимым. Таким образом, приведенное выше утверждение должно быть последним в вашем конструкторе.

Я понятия не имею, какой у вас желаемый макет, но вам нужно начать с чего-то простого и воспользоваться преимуществами BorderLayout по умолчанию.

Итак, ваша базовая логика может выглядеть примерно так:

JPanel menuPanel = new JPanel()
menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.Y_AXIS));
menuPanel.add(...);
menuPanel.add(...);

JPanel center = new JPanel();
center.setLayout(...);
center.setBackground( Color.BLUE );
center.add(...);

frame.add(menuPanel, BorderLayout.LINE_START);
frame.add(center, BorderLayout.CENTER);
frame.pack();
frame.setVisible( true );

Суть в том, чтобы логически разбивать панели и добавлять их в кадр по одному. Поэтому сначала добавьте меню и его дочерние компоненты в рамку - это правильная позиция. Затем вы можете добавить панель CENTER и ее дочерние компоненты.

0
ответ дан camickr 16 January 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: