2013-12-11 39 views
0

我在Java中创建了一个简单的Java程序,用于绘制图形基元(线条,矩形,椭圆等),这些形状通过拖动鼠标并存储到屏幕上一个Shapes数组,所以我添加了一个滑块来动态获取笔画大小(从1到20,1是默认值),但它更新了先前绘制的所有形状。动态更新Java中形状数组的笔画大小

//注1:Graphics2D图;在延长的JFrame

类定义

//注2:strokeSize值是动态与滑块

public void paint(Graphics g) 
      { 

        graph = (Graphics2D)g; 

        graph.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
          RenderingHints.VALUE_ANTIALIAS_ON); 

        graph.setStroke(new BasicStroke(strokeSize)); 

for (Shape currentShape : shapes) 
        { 
         graph.setPaint(strokeCounter.next()); 

         graph.draw(currentShape); 

         graph.setPaint(fillCounter.next()); 

         graph.fill(currentShape); 
        } 


//What follows are If statements for choosing a shape 

//and actual methods for drawing them... 

改变我的问题是:如何更新strokeSize,但仅限于形状目前正在拟定?

+0

'strokeSize'的定义在哪里? –

+0

在构造函数之前扩展JFrame的类。 – user3086760

回答

0

将笔画大小和形状一起存储。在发出绘图命令之前设置笔画大小。

+0

你的意思是把: graph.setStroke(new BasicStroke(strokeSize)); above graph.draw(currentShape); ? 我已经尝试过,但它仍然更新已绘制形状的strokeSize。 – user3086760

+0

那么你必须把它放在错误的地方。确保它在循环内部但在绘制之前。 –

+0

那么, 是的,它是在循环内,但仍然不能按预期工作。 – user3086760

0

添加graph.setStroke(new BasicStroke(currentShape.getStrokeSize()));graph.draw(currentShape);

你需要一个叫做StrokeSize属性添加到您的Shape类。

+0

形状不是一个类。我有一组形状:ArrayList shapes = new ArrayList (); – user3086760

+0

@ user3086760如果不是类,那么您将无法将其与'ArrayList'一起使用。我认为你需要定义一个新的类,它将包含你的“形状”和它的笔画大小。 –