如何用java制作一个计时器,让';让我们换颜色吧?
我正在用Java为交通灯制作一个系统。 现在,我可以推动三个按钮来改变灯光的颜色,这非常有效 我如何制作一个20秒计时器,它以绿灯开始。5秒后变为橙色持续2秒,最后13秒变为红色。计时器完成后,需要从头开始重新启动 希望有人能帮助我 您好 塞缪尔如何用java制作一个计时器,让';让我们换颜色吧?,java,timer,Java,Timer,我正在用Java为交通灯制作一个系统。 现在,我可以推动三个按钮来改变灯光的颜色,这非常有效 我如何制作一个20秒计时器,它以绿灯开始。5秒后变为橙色持续2秒,最后13秒变为红色。计时器完成后,需要从头开始重新启动 希望有人能帮助我 您好 塞缪尔 包javacursus; 导入java.awt.Graphics; 导入java.awt.Color; 导入java.awt.*; 导入java.awt.event.*; 导入java.applet.*; 导入javax.swing.*; 公共类请参
包javacursus;
导入java.awt.Graphics;
导入java.awt.Color;
导入java.awt.*;
导入java.awt.event.*;
导入java.applet.*;
导入javax.swing.*;
公共类请参见扩展小程序
{
//开始变奏曲
布尔rood;
布尔奥兰杰;
布尔格罗恩;
私有按钮roodKnop=新按钮();
私有按钮oranjeKnop=新按钮();
私有按钮groenKnop=新按钮();
//埃因德·瓦里贝伦
公共空间涂料(图g){
//德阿奇特格罗德\
//赫特斯托普利希特酒店
颜色bruin=新颜色(110,75,40);
g、 毛色(bruin);
g、 fillRect(140,20,60,150);
g、 fillRect(160、150、20、80);
g、 设置颜色(颜色为黑色);
g、 圆形(150,25,40,40);
g、 圆形(150,75,40,40);
g、 圆形(150125,40,40);
如果(rood)
{
g、 setColor(Color.red);
g、 椭圆形(150,25,40,40);
}
如果(奥兰杰)
{
g、 setColor(颜色为橙色);
g、 椭圆形(150,75,40,40);
}
如果(呻吟)
{
g、 setColor(Color.green);
g、 椭圆形(150、125、40、40);
}
}
公共void init()
{
setLayout(空);
设置大小(400400);
菜鸟后退(20300,75,25);
菜鸟退避地(颜色:红色);
roodKnop.setLabel(“rood”);
添加(roodKnop);
roodKnop.addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件evt){
已执行的roodKnop_行动(evt);
}
});
oranjeKnop.挫折(120300,75,25);
奥兰吉克诺普挫折地(颜色:橙色);
oranjeKnop.setLabel(“oranje”);
添加(oranjeKnop);
oranjeKnop.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件evt){
执行的oranjeKnop_行动(evt);
}
});
格罗恩克努普退步(220,300,75,25);
groenKnop.setLabel(“groen”);
格罗恩诺普退避地(颜色:绿色);
groenKnop.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件evt){
执行的groenKnop_行动(evt);
}
});
添加(groenKnop);
}
公共无效roodKnop_ActionPerformed(ActionEvent evt){
rood=true;
格罗恩=假;
oranje=假;
重新油漆();
}
公共无效或已执行的行动(行动事件evt){
rood=false;
格罗恩=假;
奥兰杰=真;
重新油漆();
}
公共无效groenKnop_ActionPerformed(ActionEvent evt){
rood=false;
格罗恩=真;
oranje=假;
重新油漆();
}
}
您可以尝试使用计时器()每20秒安排一次任务。看一看。它们在指定的延迟后触发事件侦听器,因此您不需要对代码进行太多修改
例如,将橙色按钮操作侦听器设置为变量而不是方法。这允许按钮和计时器使用它
private final ActionListener orangeListener = e -> {
rood=false;
groen=false;
oranje=true;
repaint();
}
在init中,橙色按钮接收操作侦听器:
oranjeKnop.addActionListener(orangeListener);
无论您决定从何处触发计时器事件,都适用相同的情况:
new TimerTask(2000, orangeListener)
将导致橙色侦听器在2秒后启动。我猜您将在其他动作侦听器中执行此操作,例如,您的橙色侦听器将成为
private final ActionListener orangeListener = e -> {
rood=false;
groen=false;
oranje=true;
new TimerTask(2000, redListener).start();
repaint();
}
当灯光变为橙色时,它将在2秒钟后自动变为红色。您正在混合Swing和AWT。考虑一下JApplet,JButton等等。这并不影响你在这里做什么,只是为了将来的参考。