繁体   English   中英

导入AWTUtilities时出错

[英]error when import 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(),那该怎么办?

忽略示例代码,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+,则实际上不再需要该A​​PI。

有关更多详细信息,请参见如何创建半透明和成形的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下运行它

或类似的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM