求大神帮我写一下java计时器的界面的题目 105
3个回答
展开全部
package other;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Exam2 extends JFrame implements ActionListener{
/**
* @Fields serialVersionUID: TODO
*/
private static final long serialVersionUID = 1L;
private JPanel panel = new JPanel();
private JLabel timeLabel = new JLabel("00:00:00");
private JButton starButton = new JButton("开始");
private JButton stopButton = new JButton("暂停");
private JButton resetButton = new JButton("重置");
private boolean isRun = false;
private MyRunable myTimeRunable = new MyRunable();
public Exam2() {
super();
starButton.addActionListener(this);
stopButton.addActionListener(this);
resetButton.addActionListener(this);
panel.add(timeLabel);
panel.add(starButton);
panel.add(stopButton);
panel.add(resetButton);
this.add(panel);
this.setBounds(250, 250, 300, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
new Thread(myTimeRunable).start();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == starButton) {
isRun = true;
}else if(e.getSource() == stopButton) {
isRun = false;
}else if(e.getSource() == resetButton) {
myTimeRunable.reset();
}
}
private class MyRunable implements Runnable{
private int hour = 0;
private int min = 0;
private int sec = 0;
private NumberFormat format = NumberFormat.getInstance();
private String nextSecond(){
++sec;
if(sec == 60) {
++min;
sec = 0;
}
if(min == 60) {
++hour;
min = 0;
}
return currentTime();
}
private String currentTime(){
return format.format(hour)+":"+format.format(min)+":"+format.format(sec);
}
public void reset(){
synchronized(nextSecond()) {
hour = 0;
min = 0;
sec = 0;
isRun = false;
timeLabel.setText("00:00:00");
}
}
@Override
public void run() {
format.setMinimumIntegerDigits(2);
format.setGroupingUsed(false);
while(true) {
if(rootPaneCheckingEnabled) {
if(isRun) {
nextSecond();
timeLabel.setText(currentTime());
}
}
try {
Thread.sleep(1000);
}catch (InterruptedException e) {
}
}
}
}
public static void main(String[] args) {
new Exam2().setVisible(true);
}
}
展开全部
稍等。。。图片上的代码限制蛮多,所以只能写成这样了。
package Test2;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Exam2 extends Thread implements ActionListener{
//声明图形界面元素
private JButton startJb;
private JButton stopJb;
private JButton resetJb;
private JLabel displayJl ;
//定义变量存储时分秒
int hour =0;
int min =0;
int sec =0 ;
boolean isRun ;
public Exam2(){
JFrame jf = new JFrame("计时器");
startJb = new JButton("开始");
stopJb = new JButton("结束");
resetJb = new JButton("重置");
displayJl = new JLabel("00:00:00");
this.startJb.addActionListener(this);
this.stopJb.addActionListener(this);
this.resetJb.addActionListener(this);
jf.setSize(300,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(new FlowLayout());
jf.getContentPane().add(this.displayJl);
jf.getContentPane().add(this.startJb);
jf.getContentPane().add(this.stopJb);
jf.getContentPane().add(this.resetJb);
jf.setResizable(false);
jf.setVisible(true);
this.start();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==this.startJb){
this.isRun = true;
}else if(e.getSource()==this.resetJb){
this.hour=0;
this.min =0;
this.sec =0 ;
showTime();
}else if(e.getSource()== this.stopJb){
isRun=false;
}
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
if(isRun){
sec +=1 ;
if(sec >= 60){
sec = 0;
min +=1 ;
}
if(min>=60){
min=0;
hour+=1;
}
showTime();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void showTime(){
String strTime ="" ;
if(hour < 10)
strTime = "0"+hour+":";
else
strTime = ""+hour+":";
if(min < 10)
strTime = strTime+"0"+min+":";
else
strTime =strTime+ ""+min+":";
if(sec < 10)
strTime = strTime+"0"+sec+":";
else
strTime = strTime+""+sec+":";
//在窗体上设置显示时间
this.displayJl.setText(strTime);
}
public static void main(String[] args){
new Exam2();
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是我以前写的一个计时器,可以参考,如果看中,记得给分啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询