Java Swing:设置JFrame内容区域大小

Java Swing:设置JFrame内容区域大小,java,swing,jframe,Java,Swing,Jframe,我正在尝试制作一个JFrame,其可用内容区域正好为500x500。如果我这样做 public MyFrame() { super("Hello, world!"); setSize(500,500); } 。。。我得到了一个完整大小为500x500的窗口,包括标题栏等,我确实需要一个大小类似504x520的窗口来说明窗口边框和标题栏。我如何才能做到这一点?您可以尝试以下几种方法: 1-黑客: public MyFrame(){ JFrame temp = new JFram

我正在尝试制作一个JFrame,其可用内容区域正好为500x500。如果我这样做

public MyFrame() {
    super("Hello, world!");
    setSize(500,500);
}

。。。我得到了一个完整大小为500x500的窗口,包括标题栏等,我确实需要一个大小类似504x520的窗口来说明窗口边框和标题栏。我如何才能做到这一点?

您可以尝试以下几种方法: 1-黑客:

public MyFrame(){
 JFrame temp = new JFrame;
 temp.pack();
 Insets insets = temp.getInsets();
 temp = null;
 this.setSize(new Dimension(insets.left + insets.right + 500,
             insets.top + insets.bottom + 500));
 this.setVisible(true);
 this.setResizable(false);
}
2-或 将JPanel添加到框架的内容窗格中,然后 只需设置首选/最小尺寸 从JPanel到500X500的调用包()

  • 2-更便于携带

    • 没关系,我想出来了:

      public MyFrame() {
          super("Hello, world!");
      
          myJPanel.setPreferredSize(new Dimension(500,500));
          add(myJPanel);
          pack();
      }
      
      只需使用:

      public MyFrame() {
          this.getContentPane().setPreferredSize(new Dimension(500, 500));
          this.pack();
      }
      

      如果您只想设置帧的大小,就不需要JPanel了。

      在Java 5中,不需要另一个面板就可以做到这一点。看见