[英]Java Applets- creating a interactive traffic light without using 'canvas'?
为了缩短它,我想设计一个java applet,它显示一个带有三个相邻按钮的交通信号灯。 一个说红灯,一个说琥珀色灯,一个说绿色。
我的问题是:我不知道如何将每个按钮与正确的椭圆相连。 所有的椭圆都属于同一个图形变量g。 如果我改变颜色,那么所有三个都会改变。
有一个叫做canvas的超类有助于将自己实体中的每个对象与我的知识分开,但我知道有一种更简单的方法。
我怎样才能做到这一点?
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.applet.Applet;
public class Traffic extends Applet
implements ActionListener
{
int colourNum; //global variable which is responible for changing the light
Button bttn1 = new Button ("Stop Traffic");
Button bttn2 = new Button ("Caution");
Button bttn3 = new Button ("Proceed");
public void init ()
{
setBackground (Color.lightGray);
bttn1.addActionListener (this); // stop light
bttn2.addActionListener (this); // yellow light
bttn3.addActionListener (this); // green light
add (bttn1);
add (bttn2);
add (bttn3);
}
public void paint (Graphics g) // responsible for graphics "within" the window
{
g.setColor (Color.black);
switch (colourNum)
{
case 1:
g.setColor (Color.red);
break;
}
g.fillOval (30, 40, 20, 20); // red light
g.fillOval (30, 70, 20, 20); // yello light
g.fillOval (30, 100, 20, 20); // green light
}
public void actionPerformed (ActionEvent evt)
{
if (evt.getSource () == bttn1)
colourNum = 1;
else if (evt.getSource () == bttn2)
colourNum = 2;
else
colourNum = 3;
repaint ();
}
}
public void paint (Graphics g) // responsible for graphics "within" the window
{
g.setColor (Color.black);
g.setColor(colourNum == 1? Color.red : Color.red.darker().darker());
g.fillOval (30, 40, 20, 20); // red light
g.setColor(colourNum == 2? Color.yellow : Color.yellow.darker().darker());
g.fillOval (30, 70, 20, 20); // yello light
g.setColor(colourNum == 3? Color.green : Color.green.darker().darker());
g.fillOval (30, 100, 20, 20); // green light
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.