资源描述
效果图:
/**
* 想法:
* 1.用户单击设定关机时间,就弹出一个对话框,要求设定关机时间。
* 2.当用户未设定关机时间时,关机时间默认为(未设定),关机剩余时间为(未了解),而当
* 用户单击并确定了关机时间时,在主界面立即显示关机时间和关机剩余时间(不停变化)。
* 3.此处不用真正的关机,而是用(打开记事本)来代替关机,后期调试无误之后再用真正的关机替代回来。
* 4.应该为字体的颜色和字体格式分别建立一个类
* 设定字体的颜色:Font font=new Font("楷体",Font.PLAIN,16);jLabel.setFont(font);
* 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.*;
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 ShowCurrentTime extends JFrame implements Runnable,ActionListener
{
SimpleDateFormat timeFormat;
JLabel jLabel,timeNow,timeShow1,timeShut,timeShow2;
JButton jButton1,jButton2;
int width,height;
//构造函数
public ShowCurrentTime()
{
//设置时间的格式
timeFormat=new SimpleDateFormat("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, 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.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);
timeShut=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();
//确定图片位置
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(){
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
{
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,this);
}
}
@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.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 {
Thread.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((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().exec("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.view.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,jComboBox3;
//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++)
{
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(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);
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);
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"));
confirmButton.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);
quxiaoButton.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);
setResizable(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 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();
}
}
}
附上图片:
展开阅读全文