Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Mac OS X中获取AWT帧的可绘制区域?_Java_Macos_Graphics_Awt_Paint - Fatal编程技术网

Java 在Mac OS X中获取AWT帧的可绘制区域?

Java 在Mac OS X中获取AWT帧的可绘制区域?,java,macos,graphics,awt,paint,Java,Macos,Graphics,Awt,Paint,我已经子类化并重写了该方法,因为我希望手动绘制窗口的全部内容 但是,在图形对象上,(0,0)对应于标题栏装饰内窗口的左上角,而不是第一个可绘制像素 我能否以跨平台的方式确定第一个可绘制像素的坐标(即装饰的高度),避免使用MacOSX特定的?为了找到窗口的实际可绘制区域,我会被迫嵌套一个组件吗 在这里,我的代码无法将蓝色正方形置于窗口可喷漆区域的中心: @Override public void paint (Graphics g) { g.setColor(Color.BLUE);

我已经子类化并重写了该方法,因为我希望手动绘制窗口的全部内容

但是,在图形对象上,(0,0)对应于标题栏装饰内窗口的左上角,而不是第一个可绘制像素

我能否以跨平台的方式确定第一个可绘制像素的坐标(即装饰的高度),避免使用MacOSX特定的?为了找到窗口的实际可绘制区域,我会被迫嵌套一个组件吗

在这里,我的代码无法将蓝色正方形置于窗口可喷漆区域的中心:

@Override
public void paint (Graphics g) {
    g.setColor(Color.BLUE);
    g.setPaintMode();
    g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}

您可以通过调用getInsets方法(在容器中定义)来查找框架插入。框架插页在框架API文档的顶部讨论。

所以您想要绘制整个区域,而根本不需要标题栏

假设您使用JDK1.4(至少),那么您可以将框架声明为“未装饰”(java.awt.frame#setUndecorated(boolean))。这样就不会创建标题栏,因此帧可绘制区域与帧消耗区域相同