Java “变色”;“灯”;在其他班级

Java “变色”;“灯”;在其他班级,java,swing,graphics,Java,Swing,Graphics,情况: 我制作了一个Java应用程序,可以打开和关闭灯。现在我需要更改灯光,这必须在类中发生。正常的“黄色”灯亮在类灯中。类彩色灯是类灯的子类 问题: 我怎样才能通过类ColorLamp中的一些代码更改灯的颜色 问题更新: 如何使用classColorLamp更改灯的颜色 代码: 这里是类灯的代码(更新): 这里是当前类彩色灯的代码(工作原理,但不是它的工作方式): 可能的右侧代码class彩色灯: 您应该做的是让所有灯对象都具有颜色。灯类本身将具有颜色.黄色,并且不能与其他类进行更改 p

情况:

我制作了一个Java应用程序,可以打开和关闭灯。现在我需要更改灯光,这必须在
类中发生。正常的“黄色”灯亮在
灯中。
彩色灯是
灯的
子类

问题:

我怎样才能通过
ColorLamp中的一些代码更改灯的颜色

问题更新: 如何使用
class
ColorLamp更改灯的颜色


代码: 这里是
灯的代码(更新):


这里是当前
彩色灯的代码(工作原理,但不是它的工作方式):


可能的右侧代码
class
彩色灯:


您应该做的是让所有
对象都具有
颜色
类本身将具有
颜色.黄色
,并且不能与其他类进行更改

public class Lamp
{
    protected Color kleur = Color.YELLOW;
    /// Other things...

    public void teken(Graphics g)
    {
            Graphics2D g2 = (Graphics2D) g;

            // Draw the lamp parts

            if(aanUit == true)
            {
                g.setColor(this.kleur); // Set color here
            }
            else
            {
                g.setColor(Color.WHITE);
            }
            g.fillOval(208, 100, 50, 50);
            g.setColor(Color.BLACK);
    }

}
然后在
彩色灯
中,您可以删除
私人彩色灯并使用继承的
受保护颜色kleur
字段


要在绘制灯后更改颜色,需要
重新绘制组件

您已经在该类中设置了颜色<代码>this.kleur=kleur@cricket\u 007如果是这么简单,我不会问这个问题。我想更改
ColorLamp中的颜色。@cricket_007它必须是一个
子类
,一个指定的灯。我假设您有
ColorLamp lamp=new ColorLamp(color.XYZ)
?@cricket_007的某个实例,我知道我必须创建该实例,除了颜色部分,颜色必须在ColorLamp
类中定义。如何使用受保护的kleur字段并重新绘制?与您使用的
方法相同。kleur
<代码>受保护
字段在所有扩展类中继承。另外,我不知道你是如何调用这个
teken
方法的,但是在那个类中,你可能有一个
JPanel
,你可以调用
panel.repaint()
,例如,我不知道怎么做,我无法摆脱它。提示?teken方法称为
test1
。您可以从感谢开始,我明天会研究它!
public class ColorLamp extends Lamp
{
    protected Color kleur = Color.GREEN;

    public Color getColor()
    {
    return kleur;
    }
}
package lamp;

import java.awt.*;

public class ColorLamp extends Lamp
{
    protected Color kleur = Color.GREEN;
    public ColorLamp(Color kleur)
    {
    super(); 
    this.kleur = kleur;
    }
    public Color getKleur()
    {
    return this.kleur;
    }
    public void setKleur(Color kleur)
    {
    this.kleur = kleur;
    }
    public String toString()
    {
    String res = "Lamp: ";
    if(super.getAanUit())
    {
        res = res + "ÄAN";
    }
    else{
        res = res + "UIT";
    }
    return res + kleur.toString();
    }
}
public class Lamp
{
    protected Color kleur = Color.YELLOW;
    /// Other things...

    public void teken(Graphics g)
    {
            Graphics2D g2 = (Graphics2D) g;

            // Draw the lamp parts

            if(aanUit == true)
            {
                g.setColor(this.kleur); // Set color here
            }
            else
            {
                g.setColor(Color.WHITE);
            }
            g.fillOval(208, 100, 50, 50);
            g.setColor(Color.BLACK);
    }

}