2011-08-02 50 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);