靜電?JTextField?redT?耶洛特?格林特;
靜電?JButton?startB,?stopB
靜電?LightPanel?LP;
公共?靜電?作廢?main(String[]?args)?{
show();
handle action();
}
私人?靜電?作廢?handleAction()?{
startB.addActionListener(新?ActionListener()?{
@覆蓋
公共?作廢?actionPerformed(ActionEvent?e)?{
LP . settimer(integer . parse int(redt . gettext()),
integer . parse int(yellow t . gettext()),
integer . parse int(greent . gettext());
startb . set enabled(false);
stopb . set enabled(true);
}
});
stopB.addActionListener(新?ActionListener()?{
@覆蓋
公共?作廢?actionPerformed(ActionEvent?e)?{
LP . stop light();
startb . set enabled(true);
stopb . set enabled(false);
}
});
}
靜電?作廢?show()?{
JFrame?f?=?新的?JFrame();
lp?=?新的?light panel();
f . add(LP);
JPanel?騙局?=?新的?JPanel();
f.add(con,BorderLayout。東);
con.setLayout(新?GridLayout(0,2));
雷德?=?新的?JTextField(" 3 ");
yellowT?=?新的?JTextField(" 1 ");
格林特?=?新的?JTextField(" 5 ");
JLabel?l?=?新的?JLabel("紅色?:?");
l . sethorizontal alignment(JLabel。拖尾);
con . add(l);
con . add(redT);
l?=?新的?JLabel("黃色?:?");
l . sethorizontal alignment(JLabel。拖尾);
con . add(l);
con . add(yellowT);
l?=?新的?JLabel("綠色?:?");
l . sethorizontal alignment(JLabel。拖尾);
con . add(l);
con . add(greenT);
startB?=?新的?JButton(" Start ");
stopB?=?新的?JButton(" stop ");
stopb . set enabled(false);
con . add(startB);
con . add(stopB);
f . pack();
f . setdefaultcloseoperation(3);
f . setlocationrelativeto(null);
f . set visible(true);
}
}
班級?LightPanel?延伸?JPanel?{
私人?int?尺寸?=?40;
私人?int?w,?h;
私人?定時器?t;
私人?int?r,?y,?g;
顏色?cr,?cy?CG;
int?我?=?0;
公共?LightPanel()?{
this.setPreferredSize(新?維度(200,?100));
this . set border(border factory . create line border(Color。灰色));
timer handle();
}
公共?作廢?交通信號燈()?{
我?=?0;
t . stop();
t . setinitialdelay(0);
cr?=?cy?=?cg?=?顏色.灰色;
repaint();
}
公共?作廢?setTimer(int?r,?int?y,?int?g)?{
這個. r?=?r?*?1000;
這個. y?=?y?*?1000;
這個. g?=?g?*?1000;
cr?=?cy?=?cg?=?顏色.灰色;
repaint();
t . restart();
}
私人?作廢?timerHandle()?{
t?=?新的?定時器(0,?新的?ActionListener()?{
布爾?旗幟?=?真實;
@覆蓋
公共?作廢?actionPerformed(ActionEvent?e)?{
切換?(我?%?3)?{
案子?0:
cr?=?顏色。紅色;
cy?=?cg?=?顏色.灰色;
repaint();
setinitialdelay(r);
t . restart();
打破;
案子?1:
cy?=?顏色.黃色;
cr?=?cg?=?顏色.灰色;
repaint();
t . setinitialdelay(y);
t . restart();
打破;
案子?2:
cg?=?顏色.綠色;
cy?=?cr?=?顏色.灰色;
repaint();
t . setinitial delay(g);
t . restart();
打破;
}
如果?(我?==?0)
旗幟?=?真實;
如果?(我?==?2)
旗幟?=?假的;
system . out . println(I);
如果?(旗幟)?{
i++;
}?其他
I-;
}
});
t . is repeats();
}
@覆蓋
公共?作廢?paintComponent(圖形?g)?{
w?=?this . getwidth();
h?=?this . getheight();
super . paint component(g);
drawRedLight(g,Cr);
drawYellowLight(g,cy);
drawGreenLight(g,CG);
}
私人?作廢?drawGreenLight(圖形?g,?顏色?c)?{
如果?(c?!=?空)
g . set color(c);
g .菲羅瓦爾(w?/?4?-?尺寸?/?2,?h?/?2?-?尺寸?/?2,?大小,?尺寸);
}
私人?作廢?drawYellowLight(圖形?g,?顏色?c)?{
如果?(c?!=?空)
g . set color(c);
g .菲羅瓦爾(w?/?4?*?2?-?尺寸?/?2,?h?/?2?-?尺寸?/?2,?大小,?尺寸);
}
私人?作廢?drawRedLight(圖形?g,?顏色?c)?{
如果?(c?!=?空)
g . set color(c);
g .菲羅瓦爾(w?/?4?*?3?-?尺寸?/?2,?h?/?2?-?尺寸?/?2,?大小,?尺寸);
}
}