我正在尝试为课堂创建交通灯。我们不允许使用IDE,所以这是在文本垫中完成的。如何访问每个圆圈的属性,以便我可以制作一个红色,绿色,黄色?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Lab4Panel extends JPanel implements MouseListener {
public Lab4Panel(){
}
JRadioButton red = new JRadioButton("Red", true);
JRadioButton yellow = new JRadioButton("Yellow");
JRadioButton green = new JRadioButton("Green");
int height, width;
int radius = 5;
int x = -1;
int y = -1;
protected void paintComponent(Graphics g){
if (x<0 || y<0) {
x = getWidth() / 2 - radius;
y = getHeight() / 2 - radius;
}
super.paintComponent(g);
g.drawRect(x - 5,y - 90, 40, 120);
g.drawOval(x,y - 80, 4 * radius, 4 * radius);
g.drawOval(x,y - 40, 4 * radius, 4 * radius);
g.drawOval(x,y, 4 * radius, 4 * radius);
}
public void mouseClicked(MouseEvent e)
{
if (e.getSource() == red){
}
else if (e.getSource() == yellow){
}
else if (e.getSource() == green){
}
}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
}
答案 0 :(得分:2)
在您的情况下,涉及的重要可修改对象是Graphics
对象g
。在绘制每个椭圆之前更改g
上的当前颜色:
g.setColor(Color.RED);
g.fillOval(x,y - 80, 4 * radius, 4 * radius);
g.setColor(Color.YELLOW);
g.fillOval(x,y - 40, 4 * radius, 4 * radius);
g.setColor(Color.GREEN);
g.fillOval(x,y, 4 * radius, 4 * radius);
使用fillOval()
javadoc填充椭圆而不是仅绘制轮廓。
答案 1 :(得分:1)
您可以在绘图环境中设置颜色:g.setColor( new Color( 255,0,0 ) )
。
答案 2 :(得分:1)
使用Graphics#setColor方法设置当前颜色。然后所有后续的绘图操作都会使用该颜色,直到更改为止。
此外,您还需要使用Graphics#fillOval方法绘制当前颜色的实心圆。
您的代码将变为:
g.drawRect(x - 5,y - 90, 40, 120);
g.setColor(Color.RED);
g.fillOval(x,y - 80, 4 * radius, 4 * radius);
g.setColor(Color.YELLOW);
g.fillOval(x,y - 40, 4 * radius, 4 * radius);
g.setColor(Color.GREEN);
g.fillOval(x,y, 4 * radius, 4 * radius);
我的颜色可能不按顺序排列,但总的想法仍然存在。