Java 30秒倒计时;“谁想成为百万富翁?”;网虫
因此,我正在努力在netbeans中制作一个版本的“Who what to a Milliant”,我的计时器有问题。我的工作代码基本上会在11秒后将数字的颜色更改为红色,并在1秒后消失(变为白色)。我要做的是让数字从5,4,3,2,1闪烁到第6秒后闪烁。但我找不到一个方法来实现这一点。我试过换衣服Java 30秒倒计时;“谁想成为百万富翁?”;网虫,java,netbeans,timer,counter,countdown,Java,Netbeans,Timer,Counter,Countdown,因此,我正在努力在netbeans中制作一个版本的“Who what to a Milliant”,我的计时器有问题。我的工作代码基本上会在11秒后将数字的颜色更改为红色,并在1秒后消失(变为白色)。我要做的是让数字从5,4,3,2,1闪烁到第6秒后闪烁。但我找不到一个方法来实现这一点。我试过换衣服 Thread.sleep(1000); 所以我可以写一个更详细的if语句,比如 Thread.sleep(1000); if (counter < 5.75 ) g.setColor(
Thread.sleep(1000);
所以我可以写一个更详细的if语句,比如
Thread.sleep(1000);
if (counter < 5.75 )
g.setColor(Color.WHITE);
if (counter < 5.25 )
g.setColor(Color.BLACK);
if(计数器<5.75)
g、 setColor(Color.WHITE);
如果(计数器<5.25)
g、 设置颜色(颜色为黑色);
但是它不起作用
Thread.sleep(1000);
这就是我到目前为止所做的:
Thread.sleep(1000);
package timer2;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class thread extends JPanel implements Runnable {
private static Object ga;
int counter;
Thread cd;
public void start() {
counter =30 ;
cd = new Thread(this);
cd.start();
}
public void stop()
{
cd = null;
}
public void run() {
while (counter>0 && cd!=null) {
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
--counter;
}
}
public void paintComponent( Graphics g)
{
repaint();
super.paintComponent(g);
g.setColor(Color.BLACK);
if (counter < 1 )
g.setColor(Color.WHITE);
g.setFont(new Font("Times New Roman",Font.BOLD,35));
if (counter < 11)
g.setColor(Color.RED);
if (counter < 1 )
g.setColor(Color.WHITE);
g.setFont(new Font("Times New Roman",Font.BOLD,100));
g.drawString(String.valueOf(counter),600,600);
}
public static void main(String[] args) {
JFrame j=new JFrame();
thread t=new thread();
t.setBackground(Color.WHITE);
t.start();
j.add(t);
j.setVisible(true);
j.getContentPane().setBackground( Color.WHITE );
j.setBounds(-8,-8,500,500);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
package timer2;
导入java.awt.Color;
导入java.awt.Font;
导入java.awt.Graphics;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类线程扩展JPanel实现可运行{
私有静态对象遗传算法;
整数计数器;
线程cd;
public void start(){
计数器=30;
cd=新螺纹(此);
cd.start();
}
公共停车场()
{
cd=null;
}
public void run(){
while(计数器>0&&cd!=null){
尝试
{
睡眠(1000);
}
捕捉(中断异常e)
{
}
--计数器;
}
}
公共组件(图形g)
{
重新油漆();
超级组件(g);
g、 设置颜色(颜色为黑色);
如果(计数器<1)
g、 setColor(Color.WHITE);
g、 setFont(新字体(“Times new Roman”,字体粗体,35));
如果(计数器<11)
g、 setColor(Color.RED);
如果(计数器<1)
g、 setColor(Color.WHITE);
g、 setFont(新字体(“Times new Roman”,字体粗体,100));
g、 抽绳(串值(计数器),600600);
}
公共静态void main(字符串[]args){
JFrame j=新的JFrame();
螺纹t=新螺纹();
t、 挫折地面(颜色:白色);
t、 start();
j、 加(t);
j、 setVisible(真);
j、 getContentPane().setBackground(Color.WHITE);
j、 立根(-8,-8500500);
j、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j、 setExtendedState(JFrame.MAXIMIZED_两者);
}
}
repaint()
。这永远不应该从那里调用while(true)
循环,而是希望使用更简单的Swing计时器进行计数Thread.sleep(1000);
Thread.sleep(1000);
e、 g
Thread.sleep(1000);
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Font;
导入java.awt.GridBagLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Formatter;
导入javax.swing.*;
@抑制警告(“串行”)
公共类倒计时扩展JPanel{
私有静态最终字符串格式=“%02d”;
私有静态最终颜色[]计时器颜色={Color.BLACK,Color.WHITE};
专用静态最终整数标签_PTS=90;
专用静态最终字体计时器\u LABEL\u Font=新字体(“Times new Roman”,Font.BOLD,LABEL\u PTS);
专用静态最终整型预调W=600;
私有静态final int PREF_H=PREF_W;
专用静态最终int定时器_延迟=100;
公共静态最终整数闪烁时间=6;
专用JLabel timerLabel=新JLabel(“”);
私人定时器;
私有int-timerColorIndex=0;
公共倒计时(整数秒){
设置时间计数(秒);
setLayout(新的GridBagLayout());
添加(timerLabel);
定时器=新定时器(定时器延迟,新定时器延迟(秒));
timer.start();
}
公共最终作废setTimerCount(整数计数){
String text=String.format(格式,计数);
timerLabel.setText(文本);
timerLabel.setFont(定时器标签字体);
}
公共空间快闪(){
timerColorIndex++;
timerColorIndex%=计时器颜色长度;
timerLabel.setForeground(定时器颜色[timerColorIndex]);
}
@凌驾
公共维度getPreferredSize(){
如果(isPreferredSizeSet()){
返回super.getPreferredSize();
}
返回新维度(PREF_W,PREF_H);
}
私有类TimerListener实现ActionListener{
私有整数毫秒;
公共计时器(int secondsLeft){
this.mSeconds=1000*secondsLeft;
}
@凌驾
已执行的公共无效操作(操作事件e){
毫秒-=计时器延迟;
整数秒=(毫秒+999)/1000;
如果(秒<闪烁时间){
flash();
}
设置时间计数(秒);
如果(秒==0){
((计时器)e.getSource()).stop();
}
}
}
私有静态void createAndShowGui(){
整数秒=20;
倒计时器主面板=新倒计时器(20);
JFrame frame=新JFrame(“倒计时”);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(主面板);