这是我用来实例化JFrame的代码示例:
public class TestFrame{
public static void main(String[] args){
JFrame frame = new JFrame();
Insets insets = frame.getInsets();
frame.setSize(new Dimension(insets.right + insets.left + 400, insets.bottom + insets.top + 400));
System.out.println(String.format("Top = %d \nBottom = %d \nLeft = %d \n Right
= %d", insets.top, insets.bottom, insets.left, insets.right));
frame.setResizable(false);
frame.setVisible(true);
}
}框架显示得很好,但所有的插入似乎都等于零。我需要知道顶部标题栏的大小,因为我想要一个大小为400x400的内容窗格。
我在多个平台上测试了它,在windows和mac上也发生了同样的事情。
我做错了什么?
发布于 2012-10-03 23:37:14
pack()。这是最干净、最简单的解决方案,您不必关心边框插入。
发布于 2012-10-03 23:37:21
如果contentPane应该恰好是400x400,那么为它的preferredSize创建一个返回它的类,并将它用作contentPane:
class MyContentPane extends JPanel {
public static final int PREF_W = 400;
public static final int PREF_H = 400;
public Dimension getPreferredSize() {
return new Dimension(PREF_W, PREF_H);
}
}或者更好:
class MyContentPane extends JPanel {
public int prefW;
public int prefH;
public MyContentPane(int prefW, int prefH) {
this.prefW = prefW;
this.prefH = prefH;
}
public Dimension getPreferredSize() {
return new Dimension(prefW, prefH);
}
}正如其他海报所提到的,您必须在顶层窗口中使用pack(),并使用布局管理器。
就我自己而言,我不喜欢这样做,而是让各种组件的实际首选大小和容器的布局管理器为我做所有这些决定。
发布于 2012-10-03 23:38:43
pack()https://stackoverflow.com/questions/12711822
复制相似问题