首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入AWTUtilities时出错

导入AWTUtilities时出错
EN

Stack Overflow用户
提问于 2014-05-24 01:37:38
回答 1查看 6.6K关注 0票数 2

如果启用了AWTUtilities,我会尝试使用这些方法,所以我使用以下方法

代码语言:javascript
复制
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编译时,它显示了一个错误。

代码语言:javascript
复制
try {AWTUtilities.setWindowOpaque(Frame, false); } catch (Exception e) {}

但是如果我使用这个导入,问题就解决了。

代码语言:javascript
复制
import com.sun.awt.AWTUtilities;

但是,当我在没有AWTUtilities的PC上运行jar时,它会在导入中抛出一个错误。

代码语言:javascript
复制
import com.sun.awt.AWTUtilities;

我不能在导入中放一个try catch(),那么我能做什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-24 01:59:15

忽略示例代码的“其他”编译器问题,Netbeans,或者更重要的是,Java输出2个警告

代码语言:javascript
复制
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)不存在的情况,例如.

代码语言:javascript
复制
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) {
    }

}

你也可以用这样的..。

代码语言:javascript
复制
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为例

基于反馈更新

代码语言:javascript
复制
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下运行它

或者其他类似的,例如

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23840473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档