import java.awt.SystemTray;
import java.awt.TrayIcon;我需要这两个包的下载地址,请知道的朋友告诉我,谢谢啦~~~(50分)
或者如果这两个包不大的话,您可以发送到--------------------------------------知识问题----------------------------------------------还有一个问题 ,Swing运行产生的Frame,如何屏蔽键盘【alt+F4】关闭的操作。我的意思是 ,产生Frame后,我不想用户通过使用快捷键【alt+f4】把窗体关闭了,最好能给个例子~~~(50分,如不够,可另+)

解决方案 »

  1.   

    只懂第一个问题,这两个类是java1.6自带的。安装jdk1.6即可。
      

  2.   

    第一个是JDK6中的包,如果不用JDK6,可以试试systray4j,sourceforge开源的第二个应该可以通过给某个组件添加快捷键alt+f4(其实什么都不干),就可以屏蔽掉系统的alt+f4
      

  3.   

    第一个问题 jdk1。6默认支持  不需要另外加开发包第二个问题可以做个监听器   监听键盘的按下事件
    判断如果是alt+f4  那就调用关闭窗体的代码
      

  4.   

    package wyf.jc;import java.awt.HeadlessException;
    import java.awt.MenuItem;
    import java.awt.PopupMenu;
    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JSpinner;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    import javax.swing.SpinnerNumberModel;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import java.util.*;
    public class AutoClose extends JFrame implements ActionListener,ChangeListener{
    JPanel []jp={new JPanel(),new JPanel(),new JPanel()};
    JTabbedPane jtp=new JTabbedPane( JTabbedPane.TOP);
    JLabel[]jlArray0={new JLabel("Hour"),new JLabel("Min"),new JLabel("sec")};
    JLabel[]jlArray1={new JLabel("Hour"),new JLabel("Min"),new JLabel("sec")};
    JLabel[]jlArray2={new JLabel("The Time is:"),new JLabel("The AutoCloseTime is:")};
    JTextField jtf=new JTextField();
    Date today =new Date();
    SpinnerNumberModel snmHours=new SpinnerNumberModel(today.getHours(),0,23,1);
    SpinnerNumberModel snmMinutes=new SpinnerNumberModel(today.getMinutes(),0,59,1);
    SpinnerNumberModel snmSeconds=new SpinnerNumberModel(today.getSeconds(),0,59,1);
    JSpinner[]js1=new JSpinner[]{
    new JSpinner(snmHours),
    new JSpinner(snmMinutes),
    new JSpinner(snmSeconds)
    };
    JSpinner[]js2=new JSpinner[]{
    new JSpinner(snmHours),
    new JSpinner(snmMinutes),
    new JSpinner(snmSeconds)
    };
    JLabel jl=new JLabel("设置关机时间");
    JButton jb=new JButton("设置");
    PopupMenu popup=new PopupMenu();
    MenuItem[]item=new MenuItem[]{
    new MenuItem("Reset The Time"),
    new MenuItem("Cenle"),
    new MenuItem("The Have Time"),
    new MenuItem("Exit The Application")
    };
    SystemTray tray;
    TrayIcon trayicon;
    long time;
    boolean flag=true;
    javax.swing.Timer t=new javax.swing.Timer(1000,this);

    public AutoClose() throws Exception {
    initFrame();
    initCompoment();
    initSystemTray();
    }
    public void initFrame(){
    this.setTitle("自动关机应用程序");
    this.setBounds(400, 400, 400, 400);
    }
    public void initCompoment(){
    new javax.swing.Timer(1000,this).start();
    for(int i=0;i<jlArray2.length;i++){
    jp[i].setLayout(null);
    jlArray2[i].setBounds(10, 5+(i*70), 100, 30);
    jp[0].add(jlArray2[i]);
    }
    for(int i=0;i<js1.length;i++){
    jlArray0[i].setBounds(40+i%3*80, 100+(i/3)*30, 50, 30);
    jlArray1[i].setBounds(40+i%3*80, 50+(i/3)*30, 50, 30);
    jp[0].add(jlArray0[i]);
    jp[1].add(jlArray1[i]);
    js1[i].setBounds(65+i%3*80, 100+i/3*30,50, 25);
    js2[i].setBounds(65+i%3*80, 50+i/3*30,50, 25);
    jp[0].add(js1[i]);
    jp[1].add(js2[i]);
    }
    jtf.setEditable(true);
    jtf.setBounds(50, 40, 200, 25);
    jp[0].add(jtf);
    jl.setBounds(10, 10, 120, 25);
    jp[1].add(jl);
    jtp.addTab("定点关机", jp[0]);
    jtp.addTab("延迟关机", jp[1]);
    jb.setBounds(190, 170, 80, 25);
    jp[2].add(jb);
    jb.addActionListener(this);
    jtp.addChangeListener(this);
    this.add(jtp, BorderLayout.CENTER);
    this.add(jp[2],BorderLayout.SOUTH);
    }
    public void setButtonEnabled(boolean b){
    item[0].setEnabled(b);
    item[1].setEnabled(b);
    item[2].setEnabled(b);
        jb.setEnabled(!b);
    }
    public void initSystemTray() throws Exception{
    for(int i=0;i<item.length;i++){
    item[i].addActionListener(this);
    popup.add(item[i]);
    }
    this.setButtonEnabled(false);
    if(SystemTray.isSupported()){
    tray=SystemTray.getSystemTray();
    Image image=Toolkit.getDefaultToolkit().getImage("E://gongshang_logos.gif");
    trayicon=new TrayIcon(image,"提示信息",popup);
    trayicon.setImageAutoSize(true);
    tray.add(trayicon);
    trayicon.addActionListener(this);
    trayicon.setToolTip("自动关闭信息");
    }
    }
    public void actionPerformed(ActionEvent arg) {
    // TODO Auto-generated method stub
    if(arg.getSource()==jb){
    int closehour=snmHours.getNumber().intValue();
    int closemin=snmMinutes.getNumber().intValue();
    int closesec=snmSeconds.getNumber().intValue();
    this.hide();
    if(jtp.getSelectedIndex()==0){
    Date closetime=new Date();
    closetime.setYear(today.getYear());
        closetime.setMonth(today.getMonth());
        closetime.setDate(today.getDate());
        closetime.setHours(closehour);
        closetime.setMinutes(closemin);
        closetime.setSeconds(closesec);
        time=(closetime.getTime()-new Date().getTime())/1000;
        
    }
    else if(jtp.getSelectedIndex()==1)
    time=closehour*3600+closemin*60+closesec;
    if(time<0){
    trayicon.displayMessage("警告", "设置时间小于当前时间;", TrayIcon.MessageType.ERROR);
    }
    else{
    t.start();
    this.setButtonEnabled(true);
    trayicon.displayMessage("信息", "定时关机已经启动", TrayIcon.MessageType.INFO);
    }
    }
    else if(arg.getSource()==item[0]){
    t.stop();
    flag=true;
    this.setButtonEnabled(false);
    this.show(true);
    }
    else if(arg.getSource()==item[1]){
    t.stop();
    flag=true;
    this.setButtonEnabled(false);
    trayicon.displayMessage("信息", "自动关机已经取消!", TrayIcon.MessageType.INFO);
    }else if(arg.getSource()==item[2]){
    String msg="系统将会在"+(time/3600)+"小时"+(time%3600/60)+"分钟"+(time%60)+"秒后关闭!";
    trayicon.displayMessage("信息", msg, TrayIcon.MessageType.INFO);
    }
    else if(arg.getSource()==t){
    today.setTime(today.getTime()+1000);
    jtf.setText((today.getYear()+1900)+"年"+(today.getMonth()+1)+"月"+(today.getDate()+"日")+today.getHours()+"小时"+today.getMinutes()+"分钟"+today.getSeconds()+"秒");
    try{
    if(time <30&&flag){
    trayicon.displayMessage("警告", "系统即将关闭!",TrayIcon.MessageType.WARNING);
    flag=false;
    }
    time =time-1;
    if(time==0){
    System.out.println("时间到");
    }
    }catch(Exception e){
    System.out.println(e);
    }
    }
    else if(arg.getSource()==item[3]){
    System.exit(0);
    }
    else if(arg.getSource()==trayicon){
    this.show(true);
    }
    } public void stateChanged(ChangeEvent arg0) {
    // TODO Auto-generated method stub
    if(jtp.getSelectedIndex()==0){
    js1[0].setValue(new Integer(today.getHours()));
    js1[1].setValue(new Integer(today.getMinutes()));
    js1[0].setValue(new Integer(today.getSeconds()));
    }
    else if(jtp.getSelectedIndex()==1){
    for(int i=0;i<3;i++){
    js2[i].setValue(new Integer(0));
    }
    }
    }
    public static void main(String args[]) throws Exception{
    new AutoClose().setVisible(true);
    }
    }
      

  5.   

    高版本的JDK支持,编出的程序在低版本JRE上运行不了