Java网红10s计时程序
看到很多小视频有挑战10s免单什么的…
自己用Java也简易实现了一个
完整代码
比较渣渣,不要介意源码
.
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Main {
static boolean tag = false;
//游戏的开关
/**
* @author Coyamo
* 2019-01-03
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("10s大挑战");
jf.setLayout(new BorderLayout());
JLabel jl = new JLabel("00.0000s");
JLabel jl2 = new JLabel("按下空格开始与结束");
JLabel jl3 = new JLabel("");
jf.add("Center", jl);
jf.add("South", jl2);
jf.add("North", jl3);
jl.setFont(new Font("宋体", 0, 100));
jf.pack();
jf.setVisible(true);
jl.setFocusable(true);
jl.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
super.keyPressed(e);
//不开线程不能及时更新JLabel
new Thread(new Runnable() {
public void run() {
if (32 == e.getKeyCode()) {
//32对应空格按钮
if (tag == false) {
jl3.setText("");
count(jl, jl3);
} else
tag = !tag;
}
}
}).start();
}
});
}
public static void count(JLabel l, JLabel l2) {
long s = System.nanoTime();
//为了更准确用了纳秒...
tag = true;
DecimalFormat dc = new DecimalFormat("00.0000");
String cur = "";
while (tag) {
double diff = (System.nanoTime() - s) / Math.pow(10, 9);
if (diff > 15)
tag = false;
cur = dc.format(diff);
l.setText(cur+"s");
}
if (cur.equals("10.0000"))
l2.setText("挑战成功!");
else
l2.setText("挑战失败!");
}
}