gpt4 book ai didi

java - 导入 AWTUtilities 时出错

转载 作者:行者123 更新时间:2023-11-30 08:23:12 24 4
gpt4 key购买 nike

如果启用了 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(),那我该怎么办?

最佳答案

忽略示例代码、Netbeans 或更重要的是 Java 的“其他”编译器问题,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

这些试图告诉您您已经使用了私有(private) 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)

这意味着……

  1. 您在编译项目时尝试包含在项目中的类已使用更高版本的 Java 编译(使用 Java 7 编译,但您试图将它们编译为 Java 6)
  2. 您已经使用 Java 7 编译了您的项目,但正试图在 Java 6 下运行它

或者一些这样的,例如

关于java - 导入 AWTUtilities 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com