未装饰的 JDialog / JFrame 比装饰的大
Undecorated JDialog / JFrame bigger than a decorated one
我发现在放置 2 个相似的 JFrames 时
在同一位置:
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 被装饰,另一个没有装饰,则生成一个装饰框架(绿色),它比未装饰框架(红色)小:
两个帧的边界相同,符合预期:
JFrame 1 bounds java.awt.Rectangle[x=200,y=200,width=400,height=200]
JFrame 2 bounds java.awt.Rectangle[x=200,y=200,width=400,height=200]
我没有找到导致它的原因。
我发现是什么导致装饰和未装饰的 JFrame
或 JDialog
具有不同的显示尺寸。
这是由于插图。未装饰的 window 的插图大小(可以使用 jFrame.getInsets()
检查)为 0,而装饰的 window 的大小 > 0.
我发现在放置 2 个相似的 JFrames 时 在同一位置:
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 被装饰,另一个没有装饰,则生成一个装饰框架(绿色),它比未装饰框架(红色)小:
两个帧的边界相同,符合预期:
JFrame 1 bounds java.awt.Rectangle[x=200,y=200,width=400,height=200]
JFrame 2 bounds java.awt.Rectangle[x=200,y=200,width=400,height=200]
我没有找到导致它的原因。
我发现是什么导致装饰和未装饰的 JFrame
或 JDialog
具有不同的显示尺寸。
这是由于插图。未装饰的 window 的插图大小(可以使用 jFrame.getInsets()
检查)为 0,而装饰的 window 的大小 > 0.