在Eclipse中编写java时,使用com.sun.awt.AMTUtilities失败

见瑞彬 2014-10-25 12:52:44
我用的是java1.8,为什么会没有这个类呢?
为什么不能用呢,这是我从网上找到的程序:
package 练习;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import com.sun.awt.*;
public class Opacity extends JFrame{
/**
*
*/
private static final long serialVersionUID = -8762282392437254016L;
JSlider slider=new JSlider(0,9,0);
public Opacity(){

this.setTitle("透明测试");
this.setDefaultCloseOperation(3);
this.setSize(400,300);
JButton btn=new JButton("透明");
this.add(btn);
this.setVisible(true);
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
setOpacity();
}
public void setOpacity() {
// TODO 自动生成的方法存根
JDialog dialog=new JDialog();
dialog.setSize(270,100);
dialog.setResizable(false);
Dimension thisSize=this.getSize();
Point thisPoint=this.getLocation();
Dimension diaSize=dialog.getSize();
dialog.setLocation(thisPoint.x+(thisSize.width+diaSize.width)/2,thisPoint.y+(thisSize.height-diaSize.height)/2);
JLabel label=new JLabel("透明度:");
slider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e) {
// TODO 自动生成的方法存根
slider();
}

private void slider() {
// TODO 自动生成的方法存根
double value=slider.getValue()/10.0;
if(com.sun.awt.AMTUtilities.isWindowOpaque(this)){
com.sun.awt.AMTUtilities.setWindowOpacity(this,(float)(1-value));
slider.setCursor(new Cursor(Cursor.HAND_CURSOR));
}else{
JOptionPane.showMessageDialog(null, this,"系统不支持 JDK版本过低或JRE系统库文件缺损", getState());
}
}
});
JPanel upPanel=new JPanel(new FlowLayout());
upPanel.add(label);
upPanel.add(slider);
dialog.add(upPanel,BorderLayout.CENTER);
dialog.setVisible(true);
}

private Point getLocation() {
// TODO 自动生成的方法存根
return null;
}

private Dimension getSize() {
// TODO 自动生成的方法存根
return null;
}});
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Opacity op=new Opacity();
}
}


最好能提供这个类。
...全文
285 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
见瑞彬 2014-10-26
  • 打赏
  • 举报
回复
应该和Eclipse没关系,在“命令提示符”窗口下,用命令编译运行,依然不行。只提示:
humanity 2014-10-25
  • 打赏
  • 举报
回复
确定你的 JDK 中有它么? 从 eclipse 项目 Package 视图中的 JRE System Library 上点+ 图标展开 jar 文件看里面的目录结构,找下是不是真的有这个类,(我个人觉得应该是有,哪怕是 IBM 的 JRE都可能有 com.sun.开头的类,但很不幸地是 weblogic 的 JRE 可能就没有,不过我不确定这点)。 现在说说出错的原因可能是因为 eclipse 通过访问规则关闭了我们使用不推荐引用的类的可能。这个功能的目的是“我们不应该让我们的程序必须依赖于特定厂商的 JRE",这不适于跨平台。不是能 Sun JRE 能跑起来,换 IBM 或 WebLogic 的 JRE 就跟不起来,这不符合设计。程序运行时应该只要提供足够的第三方 jar 包就可以了,而不应该对 JRE 这个平台本身提供额外的要求。 那么我们想不顾 eclipse 的反对依然可以使用这个类的办法,就是打开 eclipse 全局参数设置中的 Java > Compiler > Build > Error/Warning 里面一个 deprecated 类型下面有2个选项,没有 eclipse 在旁边不记得具体名字,反正有一个是设定为 Error 或 Warning 或 Ignore 的设置,并且前面还有一个打勾的地方,修改它的设置就可以了,不过要记得这个设置在项目属性上还可以覆盖全局设置。你可以在项目属性上是否开启了”使用项目上的设置“(意思是说取代 eclipse 全局参数设置)。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧