如果启用了AWTUtilities,我会尝试使用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(),那么我该怎么办?
答案 0 :(得分:4)
忽略示例代码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 +,实际上不再需要它
有关详细信息,请参阅How to Create Translucent and Shaped 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;
}
确定是否支持透明度,并决定是否要运行......作为示例
根据反馈更新
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)
这意味着......
或某些此类,例如