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