Мой код:
public MyConstructor() {
view = new JPanel(new GridLayout(3, 1));
header = new JPanel(new GridLayout(2, 1));//2 ROWS 1 COLUMN
foot = new JLabel("Copyright...");
content = new JPanel();
info = new JLabel("");
logo = new JLabel() {
BufferedImage img;
@Override
public void paint(Graphics g) {
try {
img = ImageIO.read(new File("logo.jpg"));
} catch (IOException e) {
}
g.drawImage(img, 0, 0, null);
}
};
window.add(view);
header.add(logo);
header.add(info);
view.add(header);
view.add(content);
view.add(foot);
window.setLocation(width / 2, 100);
window.setSize(width, height);
window.setPreferredSize(new Dimension(width, height));
content.setSize(window.getWidth(), height-70);
content.setPreferredSize(new Dimension(window.getWidth(), height-70));
}
"окно" - это фрейм ... класс не расширяет JFrame
Мой класс будет суперклассом для других, подклассы наследуют общедоступный контент JPanel. В моем суперклассе я пытаюсь установить ширину и высоту 3 секций моего GridLayout, компоненты логотипа и информации добавляют до 70 для их высоты ... Я установил другие компоненты (вид, заголовок, информация , logo) private, чтобы подклассы не могли получить к ним доступ ...
Когда приложение запускается, отображается окно для входа в систему, оно отображается и корректно изменяет размер. После входа в систему в экземпляре одного из подклассов окно входа затем скрывается. setVisible (false)
когда отображается новое окно, JFrame имеет правильный размер, но заголовок, содержимое и нижний колонтитул не являются точными размерами.
Я попытался установить размер и предпочтительный размер каждого из компонентов, но все еще не работает ... Я также попытался вызвать перерисовку и проверку / повторную проверку
Есть идеи?