Java 如何访问每个圆的属性?
我正试着为班级设置一个交通灯。我们不允许使用IDE,所以这是在文本板中完成的。如何访问每个圆的属性,以便生成一个红色、绿色和黄色的圆Java 如何访问每个圆的属性?,java,swing,Java,Swing,我正试着为班级设置一个交通灯。我们不允许使用IDE,所以这是在文本板中完成的。如何访问每个圆的属性,以便生成一个红色、绿色和黄色的圆 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Random; public class Lab4Panel extends JPanel implements MouseListener { public Lab4Panel(){ }
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){}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.util.Random;
公共类Lab4Panel扩展JPanel实现MouseListener{
公共Lab4Panel(){
}
JRadioButton red=新的JRadioButton(“红色”,true);
JRadioButton yellow=新的JRadioButton(“黄色”);
JRadioButton绿色=新JRadioButton(“绿色”);
int高度、宽度;
int半径=5;
int x=-1;
int y=-1;
受保护组件(图形g){
如果(x在绘图上下文中设置颜色:g.setColor(新颜色(255,0,0))
在绘图上下文中设置颜色:g.setColor(新颜色(255,0,0))
使用该方法设置当前颜色。然后所有后续绘图操作都使用该颜色,直到更改为止
此外,您还需要使用该方法以当前颜色绘制实心圆
然后,您的代码会变成:
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);
我可能把颜色弄乱了顺序,但总的想法仍然存在。使用该方法设置当前颜色。然后所有后续的绘图操作都使用该颜色,直到更改为止
此外,您还需要使用该方法以当前颜色绘制实心圆
然后,您的代码会变成:
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);
我可能把颜色弄乱了,但总的想法仍然存在。在您的情况下,重要的可修改对象是图形对象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);
用于填充椭圆形,而不仅仅是绘制轮廓。在您的情况下,重要的可修改对象是图形对象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);
用于填充椭圆形,而不是仅绘制轮廓。这不会将每个圆更改为相同的颜色吗?是的,因此您必须更改每次绘制的背景颜色。啊,好的,我知道了,我如何填充它,使其看起来像交通灯其他人给了您代码。(我本来不打算给你的,因为那是家庭作业,但不管怎样:)谢谢,我还在努力理解我在做什么。我想在六月份找份工作=)这不会把每个圆圈都变成相同的颜色吗?是的,所以你必须改变每一张画的背景颜色。啊,好吧,我明白了,我该如何填充它,使它看起来像交通灯。其他人给了你代码。(我不会给你,因为它是家庭作业,但无论如何:))是的,谢谢。我仍在努力了解我在做什么。我想在6月份找到一份工作=),这样我就可以对活动灯光使用Fillova,对当前未活动的灯光使用drawOval?不需要执行“new Color(Color.RED)”,“g.setColor(Color.RED)”意志suffice@paislee颜色上没有复制构造函数。此代码将不会编译。因此,我可以对活动灯光使用fillOval,对当前未活动的灯光使用drawOval?无需执行“新建颜色(Color.RED)”,“g.setColor(Color.RED)”意志suffice@paislee颜色上没有复制构造函数。此代码不会编译。因此,我可以对活动灯光使用fillOval,对当前未活动的灯光使用drawOval?–@paislee Color.RED/YELLOW/GREEN是在Color类上定义的预实例化颜色实例。它们肯定是对象,代码肯定是compile。所以我可以对活动灯光使用fillOval,对当前未活动的灯光使用drawOval?–@paislee Color.RED/YELLOW/GREEN是在Color类上定义的预实例化颜色实例。它们肯定是对象,代码肯定会编译。