Java代码在Mac OS X上不起作用

DEV*_*RMA 0 java macos swing awt shape

我做了一个摆动应用程序,我需要根据需要塑造窗户.

所以为了这个目的,我制作了一个相当于我想要的形状的多边形,然后调用 setShape(myPloygon)方法,通过该方法创建一个自定义形状的框架.

final Window w = new TestFrame();
w.setVisible(true);
Polygon polygon=new Polygon();
polygon.addPoint(10,0);
polygon.addPoint(0,10);
polygon.addPoint(0,573);
polygon.addPoint(10,583);
polygon.addPoint(570,583);
polygon.addPoint(580,573);
polygon.addPoint(580,545);
polygon.addPoint(720,545);
polygon.addPoint(730,535);
polygon.addPoint(730,90);
polygon.addPoint(720,80);
polygon.addPoint(580,80);
polygon.addPoint(580,10);
polygon.addPoint(570,0);
w.setShape(polygon);     //method in jdk7
Run Code Online (Sandbox Code Playgroud)

如果使用JDK 6那么

com.sun.awt.AWTUtilities.setWindowShape(w, polygon);
Run Code Online (Sandbox Code Playgroud)

它在Windows上运行完美,但是当我在Mac上尝试它时,窗口形状功能不会创建任何形状,它只显示完整的窗口

所以我该怎么做?

Eri*_*rik 5

恕我直言,你应该得到一个例外,将它粘贴在这里是有用的.当我运行代码时,我得到以下异常:

Exception in thread "main" java.lang.UnsupportedOperationException: The PERPIXEL_TRANSPARENT translucency kind is not supported
at com.sun.awt.AWTUtilities.setWindowShape(AWTUtilities.java:258)
at de.project.test.WindowShape.main(WindowShape.java:31)
Run Code Online (Sandbox Code Playgroud)

google中针对该异常的一些研究为您提供了答案,OSX不支持此方法.由于目前JDK7不适用于OSX,我们不能说它是否适用于JDK7.因此,目前在OSX上没有开箱即用的解决方案 - 除非您自己扩展框架.

更新:

要完成答案:在OSX上的JDK7中,到2012年10月仍然不支持它