在其他类中更改颜色"lamp"



>情况:

我做了一个可以打开和关闭灯的Java应用程序。现在我需要改变灯光,这必须在class的彩色灯中发生。正常的"黄色"灯放在class中。class Colorlampclasssubclass

问题:

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

问题更新:

如何使用class ColorLamp更改灯的颜色?


法典:

以下是来自class的代码(更新):

public class Lamp
{
        protected Color kleur = Color.YELLOW;
    public static final boolean AAN = true;
    public static final boolean UIT = false;
    // instance variable
    protected boolean aanUit;
    // constructor
    public Lamp()
    {
        // init instance variable
        this.aanUit = UIT;
    }
    public void setAanUit(boolean aanUit)
    {
        this.aanUit = aanUit;
    }
    // switch
    public void switchAanUit()
    {
        this.aanUit = !this.aanUit;
    }
    public boolean getAanUit()
    {
        return this.aanUit;
    }
    public String toString()
    {
        String res = "Lamp: ";
        if (aanUit)
        {
            res = res + "AAN";
        }
        else
        {
            res = res + "UIT";
        }
        return res;
    }
    public void teken(Graphics g)
    {
            Graphics2D g2 = (Graphics2D) g;
            g2.setStroke(new BasicStroke(5));
            g2.drawOval(208, 100, 50, 50);      // ronde lamp
            g2.drawLine(220, 150, 220, 175);    // linker kant
            g2.drawLine(245, 150, 245, 175);    // rechter kant
            g2.drawLine(220, 175, 235, 200);    // linksonder hoek
            g2.drawLine(235, 200, 245, 175);    // rechtsonder hoek
            if(aanUit == true)
                {
                    ColorLamp kleurlamp = new ColorLamp();
                    g.setColor(kleurlamp.getColor());
                }
                else
                {
                    g.setColor(Color.WHITE);
                }
                g.fillOval(208, 100, 50, 50);
                g.setColor(Color.BLACK);
    }
}

这里是当前class ColorLamp 的代码(有效,但不是它是如何工作的):

public class ColorLamp extends Lamp
{
    protected Color kleur = Color.GREEN;
    public Color getColor()
    {
    return kleur;
    }
}

彩色class可能的正确代码:

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();
    }
}

你应该做的是让所有Lamp对象都有一个ColorLamp类本身将具有Color.Yellow,并且不能从其他类更改。

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);
    }
}

然后在 ColorLamp 中,您可以删除private Color kleur;并使用继承的protected Color kleur字段。

要在绘制灯后更改颜色,您需要repaint组件。

相关内容

  • 没有找到相关文章

最新更新