【发布时间】:2011-05-17 09:14:52
【问题描述】:
我的代码:
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));
}
"window" 是框架...该类没有扩展 JFrame 我的类将成为其他类的超类,子类继承公共内容 JPanel。在我的超级类中,我正在尝试设置 GridLayout 的 3 个部分的宽度和高度,徽标和信息组件的高度加起来为 70...我已经设置了其他组件(视图、标题、信息,logo) 私有,以便子类无法访问它们...
当应用程序运行时,会显示一个登录窗口,该窗口会正确显示和调整大小。一旦登录一个子类的实例被创建,登录窗口就会被隐藏站点 setVisible(false)
然而,当显示新窗口时,JFrame 的大小是正确的,但页眉、内容和页脚不是正确的大小。 我已经尝试设置每个组件的大小和首选大小,但仍然无法正常工作......我也尝试过调用 repaint 和 validate/revalidate
有什么想法吗?
【问题讨论】: