2011-12-12 208 views
0

我做了一个swing应用程序,我需要根据需要对窗口进行塑造。所以为了这个目的,我制作了一个相当于我想要的形状的多边形,然后调用方法,通过这个方法,一个框架以自定义的形状创建。Java代码在Mac OS X上无法正常工作

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 

如果使用JDK 6然后

com.sun.awt.AWTUtilities.setWindowShape(w, polygon); 

它运行完美的Windows版本,但同时,我尝试在Mac然后窗形函数不创造任何形状,它只显示

整个窗口

那么我该怎么做?

回答

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) 

一些研究谷歌该异常给你答案,这种方法不支持OSX。由于目前JDK7不在OSX中,所以我们不能说它是否可以与JDK7一起使用。所以目前在OSX上没有开箱即用的解决方案 - 最好是自己扩展一个框架。

更新:

要完成答案:在JDK7的OSX,它仍然不支持高达至10月,2012

2

它仍然无法与Java 7的Mac上的支持。