Java 使用颜色作为参数的paintComponent绘制图形

Java 使用颜色作为参数的paintComponent绘制图形,java,swing,graphics,colors,paintcomponent,Java,Swing,Graphics,Colors,Paintcomponent,我必须画两个圆圈很多次,每次都用不同的颜色。所以我想把颜色作为参数传递给paintComponent方法。但是如果我这样做,超类JPanel的方法将不会被重写。我该怎么办?这是我的密码: public class Test extends JPanel{ Ellipse2D oval; public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2

我必须画两个圆圈很多次,每次都用不同的颜色。所以我想把颜色作为参数传递给paintComponent方法。但是如果我这样做,超类JPanel的方法将不会被重写。我该怎么办?这是我的密码:

public class Test extends JPanel{

    Ellipse2D oval;

    public void paintComponent(Graphics g){
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;

        oval = new Ellipse2D.Double(137, 0, 40, 40);
        g2.setPaint(Color.black);    //color I want to pass as argument
        g2.fill(oval);

        oval = new Ellipse2D.Double(420, 0, 40, 40);
        g2.setPaint(Color.red);    //color I want to pass as argument
        g2.fill(oval);
    }
}
我想在调用构造函数时传递颜色:

public class MyFrame extends JFrame {
    Test t1, t2;

    public MyFrame(){
        //setSize, setTitle...

        t1 = new Test();  // would pass the colors in here
        t2 = new Test();  // would pass the colors in here

        add(t1);
        add(t2);
        setVisible(true);
    }
}

在构造函数中传递颜色并将其保存在类成员变量中。然后重写绘制组件,使用这些颜色绘制圆

因此,在测试类中添加以下代码

private java.awt.Color insideColor;
private java.awt. Color outsideColor;

public class Test (java.awt.Color inside, java.awt.Color outside){
    this.insideColor = inside;
    this.outsideColor = outside; 
}

在构造函数中传递颜色并将其保存在类成员变量中。然后重写绘制组件,使用这些颜色绘制圆

因此,在测试类中添加以下代码

private java.awt.Color insideColor;
private java.awt. Color outsideColor;

public class Test (java.awt.Color inside, java.awt.Color outside){
    this.insideColor = inside;
    this.outsideColor = outside; 
}

在测试中存储两种颜色作为变量怎么样。然后通过构造函数设置颜色。顺便说一下,您可能希望保存图形对象的初始颜色,然后将其更改为所需的颜色,最后在完成后重置。这只是一个习惯,我不必对在测试中如何存储两种颜色作为变量而绘制的颜色感到惊讶。然后通过构造函数设置颜色。顺便说一下,您可能希望保存图形对象的初始颜色,然后将其更改为所需的颜色,最后在完成后重置。这只是一个习惯,我不必对所画的颜色感到惊讶