Java 在Mac OS X中获取AWT帧的可绘制区域?
我已经子类化并重写了该方法,因为我希望手动绘制窗口的全部内容 但是,在图形对象上,(0,0)对应于标题栏装饰内窗口的左上角,而不是第一个可绘制像素 我能否以跨平台的方式确定第一个可绘制像素的坐标(即装饰的高度),避免使用MacOSX特定的?为了找到窗口的实际可绘制区域,我会被迫嵌套一个组件吗 在这里,我的代码无法将蓝色正方形置于窗口可喷漆区域的中心: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);
@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))。这样就不会创建标题栏,因此帧可绘制区域与帧消耗区域相同