未装饰的JDialog / JFrame比装饰的大

时间:2016-08-26 09:28:19

标签: java swing jframe size jdialog

我发现在放置2个类似的JFrame时 在同一地点:

import java.awt.Color;
import java.awt.Point;
import javax.swing.JFrame;

public class Test{

  public static void main(String[] args) throws InterruptedException {

        JFrame jFrame = new JFrame();
        jFrame.setSize(400,200);
        jFrame.setUndecorated(true);
        jFrame.setLocation(new Point(200,200));
        jFrame.getContentPane().setBackground(Color.RED);
        jFrame.setVisible( true );

        JFrame jFrame2 = new JFrame();
        jFrame2.setSize(400,200);
        jFrame2.setUndecorated(false);
        jFrame2.setLocation(new Point(200,200));
        jFrame2.getContentPane().setBackground(Color.GREEN);
        jFrame2.setVisible( true );
  }
}

在一个JFrame被装饰而另一个没有装饰的情况下,产生一个装饰的框架(绿色),小于未修饰的框架(红色): enter image description here

两帧的界限是相同的,如预期的那样:

  

JFrame 1绑定java.awt.Rectangle [x = 200,y = 200,width = 400,height = 200]   
JFrame 2界限java.awt.Rectangle [x = 200,y = 200,width = 400,height = 200]

我没有找到导致它的原因。

1 个答案:

答案 0 :(得分:0)

我发现是什么导致装饰和未装饰的JFrameJDialog具有不同的显示尺寸。
这是由于插图。未修饰窗口的插图(可以使用jFrame.getInsets()检查)的大小是0,而装饰窗口的大小是> 0。 0