如果启用了AWTUtilities,我会尝试使用这些方法,所以我使用以下方法
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.*;
public class MenuPrincipal extends Llaves{
JFrame Frame=new JFrame();
};
public MenuPrincipal() {
try {Class.forName("com.sun.awt.AWTUtilities"); } catch (Exception e) {}
Frame.setSize(600, 500);
Frame.setResizable(false);
Frame.setUndecorated(true);
Frame.setLayout(null);
Frame.setLocationRelativeTo(null);
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.getContentPane().setBackground(Color.WHITE);
try {AWTUtilities.setWindowOpaque(Frame, false); } catch (Exception e) {}
}所以当我尝试用netBeans编译时,它显示了一个错误。
try {AWTUtilities.setWindowOpaque(Frame, false); } catch (Exception e) {}但是如果我使用这个导入,问题就解决了。
import com.sun.awt.AWTUtilities;但是,当我在没有AWTUtilities的PC上运行jar时,它会在导入中抛出一个错误。
import com.sun.awt.AWTUtilities;我不能在导入中放一个try catch(),那么我能做什么呢?
发布于 2014-05-24 01:59:15
忽略示例代码的“其他”编译器问题,Netbeans,或者更重要的是,Java输出2个警告
C:\Users\Shane Whitehead\Documents\NetBeansProjects\JavaApplication28\src\javaapplication28\MenuPrincipal.java:8: warning: AWTUtilities is internal proprietary API and may be removed in a future release
import com.sun.awt.AWTUtilities;
C:\Users\Shane Whitehead\Documents\NetBeansProjects\JavaApplication28\src\javaapplication28\MenuPrincipal.java:30: warning: AWTUtilities is internal proprietary API and may be removed in a future release
AWTUtilities.setWindowOpaque(Frame, false);
^
2 warnings这些内容试图告诉您,您已经使用了私有API,该API在将来可能会被删除,如果您使用Java 7+,则实际上不再需要该API。
有关更多细节,请参见如何创建半透明和形状的Windows
更新的
现在,根据您的示例,您将编译代码,但可能不会在低于6u10的Java版本上运行。您应该考虑使用一点反射来克服API (AWTUtilities)不存在的情况,例如.
public static void setOpaque(Window window, boolean opaque) {
try {
Class<?> awtUtilsClass = Class.forName("com.sun.awt.AWTUtilities");
if (awtUtilsClass != null) {
Method method = awtUtilsClass.getMethod("setWindowOpaque", Window.class, boolean.class);
method.invoke(null, window, opaque);
}
} catch (Exception exp) {
}
}你也可以用这样的..。
public static boolean supportsPerAlphaPixel() {
boolean support = false;
try {
Class<?> awtUtilsClass = Class.forName("com.sun.awt.AWTUtilities");
support = true;
} catch (Exception exp) {
}
return support;
}以确定是否支持透明性,并决定您是要运行还是以not...as为例
基于反馈的更新
Exception in thread "main" java.lang.UnsupportedClassVersionError: DoraditosPatt y/main : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620) 这意味着..。
或者其他类似的,例如
https://stackoverflow.com/questions/23840473
复制相似问题