1、效果图: /** * 想法: * 1.用户单击设定关机时间,就弹出一个对话框,要求设定关机时间。 * 2.当用户未设定关机时间时,关机时间默认为(未设定),关机剩余时间为(未了解),而当 * 用户单击并确定了关机时间时,在主界面立即显示关机时间和关机剩余时间(不停变化)。 * 3.此处不用真正的关机,而是用(打开记事本)来代替关机,后期调试无误之后再用真正的关机替代回来。 * 4.应该为字体的颜色和字体格式分别建立一个类 * 设定字体的颜色:Font font=new Font("楷体",Font.PLAIN,16);jLabel.setFont(font
2、); * 5.当前时间和设定的关机时间相等时,应弹出一个对话框,默认存在10秒,问:是否关机?(答:是 或 否) * 如果10秒内没有操作,则执行关机。 */ package com.view; import javax.swing.*; import javax.swing.Timer; import javax.swing.text.Position.Bias; import java.text.SimpleDateFormat; import java.util.*; import java.awt.*; import java.awt.event.*
3、 import java.io.*; import javax.imageio.*; public class ShutDownView{ public static String myTime; public static void main(String args[]) { ShowCurrentTime showCurrentTime=new ShowCurrentTime(); Thread thread1=new Thread(showCurrentTime); thread1.start(); } } class
4、ShowCurrentTime extends JFrame implements Runnable,ActionListener { SimpleDateFormat timeFormat; JLabel jLabel,timeNow,timeShow1,timeShut,timeShow2; JButton jButton1,jButton2; int width,height; //构造函数 public ShowCurrentTime() { //设置时间的格式 timeFormat=new SimpleDateForm
5、at("HH:mm:ss"); //手型光标 Cursor myCursor=new Cursor(Cursor.HAND_CURSOR); //timer =new Timer(1000, this); //timer.start(); jLabel=new JLabel("距离关机剩余:"); jLabel.setBounds(0,0,100, 20); this.add(jLabel); timeShow1=new JLabel("当前时间:"); timeShow1.setBounds(160, 40, 120,
6、 30); this.add(timeShow1); timeNow=new JLabel(); timeNow.setBounds(160, 60, 120, 30); this.add(timeNow); jButton1=new JButton(new ImageIcon("images/time.gif")); jButton1.setCursor(myCursor); jButton1.setBounds(160, 0, 120, 30); jButton1.addActionListener(this); this.
7、add(jButton1); jButton2=new JButton(new ImageIcon("images/now.gif")); jButton2.setCursor(myCursor); jButton2.setBounds(115, 125,45, 35); this.add(jButton2); //关机时间 timeShow2 =new JLabel("关机时间:"); timeShow2.setBounds(0, 40, 100,30 ); this.add(timeShow2); timeShu
8、t=new JLabel("尚未设定时间"); timeShut.setBounds(0, 60, 100,30 ); this.add(timeShut); //得到屏幕的宽和高 width =Toolkit.getDefaultToolkit().getScreenSize().width; height =Toolkit.getDefaultToolkit().getScreenSize().height; this.setLayout(null); BackImage backImage=new BackImage();
9、//确定图片位置 backImage.setBounds(0,0,280,280); this.add(backImage); this.setLocation((width-280)/2, (height-280)/2); this.setSize(283,305); this.setVisible(true); this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); addWindowListener(new WindowAdapter(){
10、 public void windowClosing(WindowEvent e){ int n=JOptionPane.showConfirmDialog(null,"确认退出吗?","确认对话框",JOptionPane.YES_NO_OPTION ); if(n==JOptionPane.YES_OPTION) System.exit(0); }}); } class BackImage extends JPanel {
11、 Image image; public BackImage() { try { image=ImageIO.read(new File("images/shutdown4.png")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void paintComponent(Graphics g) { g.drawImage(image,0,0,280,280,th
12、is); } } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jButton1) { new SetTimes(); //System.out.println("主页获取到了关机时间"+ShutDownView.myTime); //有误System.out.println(timeFormat.format(Calendar.getInstance().getTime().toString())); //System.out.
13、println((Calendar.getInstance().getTime().toString()).subSequence(11, 19)); timeShut.setText(ShutDownView.myTime); } //马上关机 if(e.getSource()==jButton2) { } } @Override public void run() { // TODO Auto-generated method stub while(true) { try { Thr
14、ead.sleep(1000); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } //System.out.println(Calendar.getInstance().getTime().toLocaleString()); this.timeNow.setText(Calendar.getInstance().getTime().toLocaleString()); //如果当前时间和设定的时间相等就关机 if((
15、Calendar.getInstance().getTime().toString()).subSequence(11,19).equals(ShutDownView.myTime)) { System.out.println("现在关机"); /** * shutdown -h now(关机命令) * java.lang.Runtime.getRuntime().exec("c:/windows/notepad.exe"); */ try { java.lang.Runtime.getRuntime().e
16、xec("c:/windows/notepad.exe"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } package com.view; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.*; import com.v
17、iew.ShowCurrentTime.BackImage; import java.awt.*; import java.awt.event.*; import java.io.File; import java.io.IOException; public class SetTimes extends JDialog implements ActionListener{ JButton confirmButton,quxiaoButton; JLabel jLabel1,shi,fen,miao; JComboBox jComboBox1,jComboBox2,j
18、ComboBox3; //JComboBox jComboBox; private String theShutTime; public String getTheShutTime() { return theShutTime; } public void setTheShutTime(String theShutTime) { this.theShutTime = theShutTime; } public SetTimes() { jComboBox1=new JComboBox(); for(int i=0;i<10;i++)
19、 { jComboBox1.addItem("0"+i); } for(int i=10;i<24;i++) { jComboBox1.addItem(i+""); } jComboBox1.setSize(70,20); jComboBox1.setLocation(40, 110); jComboBox1.setMaximumRowCount(5); add(jComboBox1); shi=new JLabel("时"); shi.setBounds(90,110,20,20); add(
20、shi); jComboBox2=new JComboBox(); for(int i=0;i<10;i++) { jComboBox2.addItem("0"+i); } for(int i=10;i<60;i++) { jComboBox2.addItem(i+""); } jComboBox2.setSize(70,20); jComboBox2.setLocation(120, 110); jComboBox2.setMaximumRowCount(5); add(jComboBox2);
21、fen=new JLabel("分"); fen.setBounds(170,110,20,20); add(fen); jComboBox3=new JComboBox(); for(int i=0;i<10;i++) { jComboBox3.addItem("0"+i); } for(int i=10;i<60;i++) { jComboBox3.addItem(i+""); } jComboBox3.setSize(70,20); jComboBox3.setLocation(200, 110
22、); jComboBox3.setMaximumRowCount(5); add(jComboBox3); miao=new JLabel("秒"); miao.setBounds(250,110,20,20); add(miao); Cursor myCursor=new Cursor(Cursor.HAND_CURSOR); setLayout(null); confirmButton=new JButton(new ImageIcon("images/queding.jpg")); confir
23、mButton.setBounds(65,160,50,25); confirmButton.setCursor(myCursor); confirmButton.addActionListener(this); add(confirmButton); quxiaoButton =new JButton(new ImageIcon("images/quxiao.jpg")); quxiaoButton.setBounds(180, 160, 50, 25); quxiaoButton.setCursor(myCursor); quxia
24、oButton.addActionListener(this); add(quxiaoButton); jLabel1=new JLabel("请选择您的关机时间:"); jLabel1.setBounds(70,60,120,25); add(jLabel1); BackImage backImage=new BackImage(); //确定图片位置 backImage.setBounds(0,0,300,201); this.add(backImage); setSize(308,232); setResizab
25、le(false); setLocation(533, 284); setModal(true); setVisible(true); //validate(); } class BackImage extends JPanel { Image image; public BackImage() { try { image=ImageIO.read(new File("images/setup.gif")); } catch (IOException e) { // TODO Auto-generated
26、 catch block e.printStackTrace(); } } public void paintComponent(Graphics g) { g.drawImage(image,0,0,300,201,this); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==quxiaoButton) { dispose(); } if(e.getSource()==confirmButton) { theShutTime=jComboBox1.getSelectedItem()+":"+jComboBox2.getSelectedItem()+":"+jComboBox3.getSelectedItem(); //System.out.println(theShutTime); ShutDownView.myTime=theShutTime; dispose(); } } } 附上图片:






