Java小程序-不使用';画布';?
简而言之,我想设计一个java小程序,用三个相邻的按钮显示交通灯。一个表示红灯,一个表示琥珀色灯,一个表示绿色灯Java小程序-不使用';画布';?,java,applet,Java,Applet,简而言之,我想设计一个java小程序,用三个相邻的按钮显示交通灯。一个表示红灯,一个表示琥珀色灯,一个表示绿色灯 我的问题是:我不知道如何将每个按钮与右侧的椭圆形链接。所有椭圆都属于同一图形变量g。如果我改变颜色,这三种颜色都会改变 有一个名为canvas的超类,它可以帮助将每个对象在自己的实体中与我的知识分离,但我知道有一种更简单的方法 我该怎么做 import java.awt.*; import java.awt.event.*; import java.applet.*; import
我的问题是:我不知道如何将每个按钮与右侧的椭圆形链接。所有椭圆都属于同一图形变量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 ();
}
}
您应该避免在顶级容器(如Appet)上覆盖油漆。您还应该调用super.paint来表示对绘制链的敬意。最好创建新的基于
画布的组件来单独处理交通信号的绘制。最好的策略可能是让TrafficLights
类知道如何绘制自身及其状态(例如,红色、绿色、闪烁的黄色。当需要绘制时。调用交通灯。从绘制中绘制(图形)
以绘制当前状态。顺便说一句-为什么AWT而不是Swing?(上千年)为什么一个小程序而不是框架
或JFrame
?(更容易)SWT被高估了。。。
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
}