2011-08-02 42 views
0

我需要一些幫助,我必須爲Uni創建此程序。問題是setColor和getColor方法不起作用,並且當我也需要它時,該行不會改變顏色。如何更改小程序顏色

我需要做些什麼才能將線的顏色更改爲紅色?

乾杯

import java.awt.Color; 
import java.awt.Point; 
import javax.swing.JPanel; 
import java.awt.*; 

public class Shape extends JPanel { 
static Point startPoint = new Point(0, 0); 
Point controlPoint = new Point(0, 0); 

Color colour = Color.BLACK; 

public Shape() { 
    this(startPoint); 

} 

public Shape(Point startPoint) { 
    // initialise variable startPoint 
    this.startPoint = startPoint; 
    // execute methods setColour and setControlPoint 
    setColor(colour); 
    setControlPoint(controlPoint); 
    // change startPoint 
    startPoint.x = 50; 
    startPoint.y = 50; 

} 

public void setColor(Color colour) { 
    this.colour = colour; 
    colour = Color.RED; 
} 

public Color getColor() { 
    return colour; 
} 

public void setControlPoint(Point controlPoint) { 
    controlPoint.x = 150; 
    controlPoint.y = 150; 
} 

public void paintComponent(Graphics g) { 
    super.paintComponents(g); 
    g.setColor(colour); 
    g.drawLine(startPoint.x, startPoint.y, controlPoint.x, controlPoint.y); 
} 

}

+2

你應該張貼的[SSCCE](http://pscode.org/sscce.html )。 –

+0

'setColor'方法的目標是什麼?第二行是無操作的,當你在這裏顯示的這個部分調用它時,第一行也不做任何操作。 –

回答

3

你需要調用重繪()設置顏色爲

public void setColor(Color colour) { 
    this.colour = colour; 
    colour = Color.RED; 

    // Repaint so the component uses the new color 
    repaint(); 
} 
+1

+1,無論何時更改oa組件的屬性,都需要重新繪製()組件。 – camickr

+0

還記得爲您的對象設置可見性。 –

+0

默認情況下,Swing組件是可見的,除了頂層容器(JFrame,JDialog,JWindow ...)。 – camickr

1

之後,或者,你可以擺脫的setColor()方法。

然後你可以使用:

setForeground(colour); 

控制線的顏色來繪製。

圖形的顏色對象將被設置前景色所以你也可以擺脫:

g.setColor(colour);