java - Insets.top , left, bottom, right 全部为零

标签 java swing layout layout-manager insets

这是我用来实例化 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 的内容 Pane 。

我在多个平台上测试过它,同样的事情发生在 windows 和 mac 上。

我做错了什么?

最佳答案

  1. 如果您希望您的内容 Pane 正好是 400x400,那么我会考虑将其 preferredSize 设置为 400x400(虽然我不喜欢强制首选大小,但在某些情况下,在内容 Pane 上它可能是可以接受的)。
  2. 在设置首选大小之后和显示框架之前,调用框架上的 pack()

这是最干净、最简单的解决方案,您不必关心边框插入。

关于java - Insets.top , left, bottom, right 全部为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711822/

相关文章:

java - 是什么让线程的执行顺序不可预测?

java - 在 Spring Boot JPA 中,为什么我会得到 "Table already exists; SQL statement:"

java - 更新滚动 Pane 的模型不会更新窗口

css - CSS:两列(固定/流体)-高度相同

java - 获取对象数组数据

java线程提前终止并且可疑

java - JMenuItem.getRootPane() 解决方法?

java - 面板背景图片截图

css - 将多个 div 重新对齐到一个固定的 div