求大神帮我写一下java计时器的界面的题目 105

 我来答
0_杰
2013-12-13 · TA获得超过125个赞
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:81.2万
展开全部
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);
    }
}
百度网友fe6d0b6
推荐于2018-04-05 · TA获得超过275个赞
知道小有建树答主
回答量:397
采纳率:75%
帮助的人:263万
展开全部

稍等。。。图片上的代码限制蛮多,所以只能写成这样了。

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();
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1435397496
2013-12-13 · TA获得超过697个赞
知道小有建树答主
回答量:317
采纳率:96%
帮助的人:176万
展开全部

这是我以前写的一个计时器,可以参考,如果看中,记得给分啊

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式