要求:
编写一个图形界面程序,运行之后,让其中有一个线程能在界面上不断显示系统当前时间(获取
时间可查询java.util.Calendar 类,它包含了多个用于获得系统时间的函数)。另让一个线程可以在界
面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是8:00到9:00,则提示
用户该上课;现在是23:00到8:00,则提示用户该休息)
编写一个图形界面程序,运行之后,让其中有一个线程能在界面上不断显示系统当前时间(获取
时间可查询java.util.Calendar 类,它包含了多个用于获得系统时间的函数)。另让一个线程可以在界
面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时间现在是8:00到9:00,则提示
用户该上课;现在是23:00到8:00,则提示用户该休息)
import java.util.*;import javax.swing.*;import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame implements Runnable,ActionListener{
Thread th1 = new Thread(this);
Thread th2 = new Thread(this);
JLabel labelDate,labelAshow;
JPanel p1,p2;
GridLayout gridLayout=new GridLayout(2,1,3,3);
Main(){
th1.start();
th2.start();
labelDate=new JLabel();
labelAshow=new JLabel();
labelDate.setHorizontalAlignment(JLabel.CENTER);
p1=new JPanel();
p2=new JPanel();
p1.add(labelDate);
p2.add(labelAshow);
this.getContentPane().setLayout(new GridLayout(2,1));
add(p1);
add(p2);
setSize(800,600);
setResizable(false);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void run()
{
try{
while(true){
if(Thread.currentThread()==th1){
Calendar cal = Calendar.getInstance();
int y = cal.get(Calendar.YEAR);
int mon = cal.get(Calendar.MONTH)+1;
int d = cal.get(Calendar.DATE);
int h = cal.get(Calendar.HOUR);
int min = cal.get(Calendar.MINUTE);
int s = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);
if(ap==1)
h = h+12;
labelDate.setText("日期:"+y+"-"+((mon<=9)?"0"+mon:mon)+"-"+((d<=9)?"0"+d:d)+" 时间:"+h+":"+((min<=9)?"0"+min:min)+":"+((s<=9)?"0"+s:s));
labelDate.setFont(new Font("楷体",Font.PLAIN,15));
Thread.sleep(1000);
}
else
if(Thread.currentThread()==th2){ }
}
}
catch(Exception ee){
ee.printStackTrace();
}
}
public void actionPerformed(ActionEvent ae) {
}
public static void main(String as[]){
Main obj;
obj = new Main();
}}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;public class TestFrame extends JFrame
{
private JLabel lblTime = new JLabel();
private JLabel lblDo = new JLabel();
public TestFrame()
{
this.setLayout(new GridLayout(2, 1));
add(lblTime);
add(lblDo);
new TimeThread().start();
new DoThread().start();
}
private class TimeThread extends Thread
{
public void run()
{
while (true)
{
Calendar calendar = new GregorianCalendar();
lblTime.setText(String.format("现在是:%d年%02d月%02d日 %02d:%02d:%02d",
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DATE),
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND)));
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
private class DoThread extends Thread
{
public void run()
{
while (true)
{
Calendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int secord = calendar.get(Calendar.SECOND);
if (8 <= hour && hour < 9)
{
lblDo.setText("消息:该上课了");
}
else if (23 <= hour || hour < 8)
{
lblDo.setText("消息:该休息了");
}
else
{
lblDo.setText("消息:无");
}
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new TestFrame();
frame.setSize(250, 100);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}