2013-11-24 80 views
0

我處於編程類中,我們正在創建一個類以獲取來自用戶的用於製作橢圓的輸入(長軸爲短軸和硬部分顏色) 。我想要做的是讓用戶輸入rbg值並製作自定義顏色來填充橢圓。在主類中,我通過JOptionPane窗口完成了所有輸入,並將其解析爲double值,並在JFrame中顯示橢圓。如何在java中創建新顏色時使用變量

String input = JOptionPane.showInputDialog("Enter the major Axis of your Ellipse: "); 
    int majAxis = Integer.parseInt(input); 

    input = JOptionPane.showInputDialog("Enter the Minor Axis of your Ellipse:"); 
    int minAxis = Integer.parseInt(input); 

    input = JOptionPane.showInputDialog("Enter the red value in the RBG of your color:"); 
    double red = Double.parseDouble(input); 

    input = JOptionPane.showInputDialog("Enter the blue value in the RBG of your color:"); 
    double blue = Double.parseDouble(input); 

    input = JOptionPane.showInputDialog("Enter the green value in the RBG of your color:"); 
    double green = Double.parseDouble(input); 

然後我有它通過一個構造傳遞給其他類:

Ellipse component = new Ellipse(majAxis, minAxis, red, blue, green); 

然後在其他I類具有從一個構造轉印到實例變量然後進入新的顏色構造的數據。

public Ellipse(int maj, int min, double red1, double blue1, double green1) 
{ 
    major = maj; 
    minor = min; 
    red = red1; 
    blue = blue1; 
    green = green1; 
} 

public void paintComponent(Graphics g) 
{ 
    //sets up access to graphics 
    Graphics2D g2 = (Graphics2D)g; 

    Color custom = new Color(red, blue, green);   //this is where i get an error saying the variable is undefined. 

    Ellipse2D.Double e = new Ellipse2D.Double((this.getWidth()-major)/2,(this.getHeight()-minor)/2,major,minor); 
    g2.setColor(Color.BLACK); 
    g2.draw(e); 
} 
private int major; 
private int minor; 
private double red; 
private double blue; 
private double green; 

我需要能夠使用變量,我不知道它爲什麼不工作。因此,請得到一些關於如何做到這一點的建議幫助。我不想使用if語句和預設顏色,所以這是我唯一的選擇。

+1

這應該工作,我不知道爲什麼它不是 –

+1

是否是paintComponent方法是Ellipse類的一部分? – fpw

+2

我們可以看到整個Ellipse類嗎? –

回答

2

首先,你應該通過

Color custom = new Color(red, green, blue); // in this order: R G B 

其次,你的變量red,​​和blue其實沒有定義。在撥打new Color(r, g, b)之前,您應該給他們分配一個值。第三,Color類的構造函數接受類型爲int(0..255)或float(0..1)的參數。所以可能你應該用float red, green, blue替換double red, green, blue

相關問題