我创建了500,500大小的小框架,在我的框架中我添加了面板,我已经动态添加了标签和文本框,我在我的面板中添加了10个标签它正确显示但我将添加另外5个标签和文本框继续上面添加的标签意味着在5个标签和文本框之后隐藏,所以如何 我自动延伸框架高度
答案 0 :(得分:3)
调用.pack()
方法应该可以解决问题:
public void pack()
使此窗口的大小适合首选大小和布局 其子组件。窗口的最终宽度和高度是 如果任何一个尺寸小于,则自动放大 上一次调用setMinimumSize指定的最小大小 方法。如果窗口和/或其所有者尚未显示,则两者都可以显示 在计算首选尺寸之前,它们是可显示的。 窗口在计算其大小后进行验证。
答案 1 :(得分:2)
有一些重要的规则和必要的知识,具体的LayoutManager如何使用min,max和PreferredSize来自它的孩子
我强烈建议您添加(re)validate()
和repaint()
已经可见Container
使用JScrollPane
作为JComponent
/ JFrame
/ JDialog
添加的第一个JWindow
,并确定{{1}的最大尺寸(最好可能来自显示分辨率),在超出最大大小的情况下不要使用JFrame
,否则容器边界可能会超出屏幕
代码示例,必须在第2点添加规则。
pack()
答案 2 :(得分:0)
没有布尔值可以设置为true以使帧自动增长。
每次添加内容时,您可能希望执行内容面板getPreferredSize()
,并frame.setSize(...)
以适应新组件。
这是一个演示
public class FrameTestBase {
public static void main(String args[]) {
final JFrame t = new JFrame();
t.getContentPane().setLayout(new GridLayout(-1, 1));
t.add(new JButton(new AbstractAction("Add label") {
@Override
public void actionPerformed(ActionEvent arg0) {
t.getContentPane().add(new JLabel("hello"));
// Auto-adjust height.
Dimension dim = t.getContentPane().getPreferredSize();
dim.width = 500;
t.setSize(dim);
}
}));
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setSize(500, 500);
t.setVisible(true);
}
}