2013-04-26 3 views
0

Я добавил два JPanels в JPanel с GridBagLayout. В настоящее время проблема заключается в следующем:JPanel размер выпуск

При загрузке основной панели отображается бит верхней панели над фактическим местом, где он должен быть, и когда данные из db загружаются в JTextfields и JComboBox, тогда панель переходит в ее фактический размер.

Пример код:

public class JPanelIssue extends JPanel { 
    public JPanelIssue() { 
    JPanel mainPanel = new JPanel(new GridBagLayout()); 
    JPanel panel1 = new JPanel(); 
    JPanel panel2 = new JPanel(); 
    mainPanel.add(panel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.6, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
    mainPanel.add(panel2, new GridBagConstraints(0, 1, 1, GridBagConstraints.REMAINDER, 1.0, 0.4,GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 

    add(mainPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
    } 
} 

panel1 содержит поле, связанное с поиском критериев и panel2 содержит JTable dispalying reults.

Есть ли проблемы по поводу очереди событий AWT или каких-либо проблем?

Заранее спасибо.

+0

Звуки совершенно нормально для меня. Получил снимок экрана или поставил еще пример кода? – MadProgrammer

+0

Немного подробнее пожалуйста. В каком состоянии заполняются панели и поля? Показано? Скрытые? Установлены ли размеры? Нужно ли пользователю щелкнуть что-нибудь до заполнения этих полей? – Skepi

+0

@MadProgrammer Я поставил образец кода. – eatSleepCode

ответ

2

комментарий только

не воспроизводимы из этого кода пропущено, потому что вы забыли добавить что-то о JTextfields and JComboBox then panel goes to its actual size.

Когда основные панели нагрузки он показывает бит верхней панели выше фактического места оно должно быть и когда данные из db загружаются в поля JTextfields и JComboBox , тогда панель переходит в фактический размер.

GBC основан на PreferredSize пришел из JComponents обратно в contianer (в предположении, что около JPanel)

Есть два способа

  1. (proper) установить правильную PreferredSize для JTextField и JComboBox тоже

  2. (sizing hack) переопределение getPreferredSize для JPanel содержит JTextField и JComboBox

  3. тогда все еще один родитель (ы)/контейнеры должны быть уведомлены, не переопределяют любой setSize, setBounds, setPreferredSize, только JFrame.pack()

+0

Спасибо за решение, но я не получаю 3-й пункт и что писать в режиме overreden getPreferredSize. – eatSleepCode

Смежные вопросы