求助实现倒计时器的一个功能。

qq_17710615 2014-07-15 07:25:20

十万火急!!!

功能:点击按钮B3,开始从time秒倒计时。
要求每0.1秒显示在JText T上。(就是5.4,变5.3,变5.2这样)。
当time=0时,进入一个判断,如果k=m,就在JText C上显示“YOU WIN”
else显示“YOU LOSE”。

这里面的k和m是我程序前面运行的结果,不用管,后面的显示我也能实现,
关键就是这个倒计时器还有time=0进入判断该怎么实现。。

下面是我自己的代码。。硬写的,实现不了。
B3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
time=k*200;
T.setText("你还有"+(double)time/1000+"秒");
playerThread=new Thread(new Runnable(){
public void run(){
while(time>0){
try{
Thread.sleep(100);
}catch(Exception f){
f.printStackTrace();
}
time=time-100;
if(time==0){
if(k==m)
{C.setText("You win");}
else
{C.setText("You lose");}
}
}
}
});
}
});

鄙人实在是新手。。。求论坛大神帮忙呐!
最好就是帮忙重写一下啦~
...全文
226 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
guest6379 2014-07-15
  • 打赏
  • 举报
回复
jdk6 编译, swing界面,开始,暂停,继续按钮。 写的不好,仅供参考

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class CountDownDemo extends JFrame {
    private final String COUNT = "10.0";
    private final String START = "start";
    private final String PAUSE = "pause";
    private final String RESUME = "resume";
    
    private JLabel jlblCountDown;
    private JButton jbtnStart;
    private JButton jbtnPause;
    
    private ActionListener listener = new ActionListener() {
        boolean available = true; // 倒计时是否工作
        boolean isRunning = false; // 线程是否在运行
        Thread t = null;
        @Override
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if(t == null){
                t = new Thread(new Runnable() {
                    
                    @Override
                    public void run() {
                        float i = Float.parseFloat(COUNT);
                        while(i > 0){
                            if(available){
                                try {
                                    Thread.sleep(100);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                i -= 0.1f;
                                jlblCountDown.setText(String.format("%.1f", i<0?0:i));
                            }
                        }
                        isRunning = false;
                        t = null;
                    }
                });
            }
            if(source == jbtnStart){
                if(!isRunning){
                    isRunning = true;
                    t.start();
                }
            }
            else if(source == jbtnPause){
                if(PAUSE.equals(jbtnPause.getText())){
                    jbtnPause.setText(RESUME);
                    available = false;
                }
                else{
                    available = true;
                    jbtnPause.setText(PAUSE);
                }
            }
        }
    };
    
    private void initUI(){
        jlblCountDown = new JLabel(COUNT, SwingConstants.CENTER);
        jbtnStart = new JButton(START);
        jbtnPause = new JButton(PAUSE);
        
        JPanel panel = new JPanel();
        panel.add(jbtnStart);
        panel.add(jbtnPause);
        add(jlblCountDown, BorderLayout.CENTER);
        add(panel, BorderLayout.SOUTH);
        
        jbtnStart.addActionListener(listener);
        jbtnPause.addActionListener(listener);
    }
    
    public CountDownDemo(){
        initUI();
        setSize(300, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            
            @Override
            public void run() {
                CountDownDemo demo = new CountDownDemo();
                demo.setVisible(true);
            }
        });
    }
}
huntor 2014-07-15
  • 打赏
  • 举报
回复
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.time.*;

public class CountDownTimerExample {
    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable(){
                @Override public void run(){
                    final JFrame frame = new JFrame("CountDownTimerExample");

                    final JLabel message = new JLabel("");
                    frame.add(message);
                    final JButton start = new JButton("Start");

                    final Timer timer = new Timer(100, new ActionListener(){
                        Duration d = Duration.ofSeconds(5);
                        @Override public void actionPerformed(ActionEvent e){
                            if(d.isNegative()) return;
                            message.setText(d.toString().substring(2));
                            d = d.minusMillis(100);
                        }
                    });
                    start.addActionListener(new ActionListener(){
                        @Override public void actionPerformed(ActionEvent e){
                            timer.start();
                        }
                    });
                    frame.add(start, BorderLayout.PAGE_END);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setPreferredSize(new Dimension(300,200));
                    frame.pack();
                    frame.setVisible(true);

                }
            });
    }
}
Java8编译运行

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧