2016-09-28 113 views
0

我无法弄清楚如何获得“g.setStroke(new BasicStroke(5));”被设置为所有我创建的形状(在这种情况下为椭圆形)。使用Java绘图:将边框/轮廓应用到形状

我的代码:

import java.awt.*; 
import java.awt.Color; 
import java.awt.Graphics2D; 
import java.awt.BasicStroke; 

public class Rings 
{ 
    public static void main(String[] args) 
    { 
     DrawingPanel panel = new DrawingPanel(300, 300); 

     Graphics2D g = panel.getGraphics(); 
     g.setStroke(new BasicStroke(5)); // Sets Outer Line Width of Shapes 
     g.setColor(new Color(255, 0, 0)); 
     g.fillOval(50, 50, 200, 200); // Large Oval 
     g.setColor(new Color(200, 0, 0)); 
     g.fillOval(100, 100, 100, 100); // Medium Oval 
     g.setColor(new Color(150, 0, 0)); 
     g.fillOval(125, 125, 50, 50); // Small Oval 
     g.setColor(new Color(100, 0, 0)); 
     g.fillOval(137, 137, 25, 25); // Tiny Oval 
    } 
} 

我的输出:

My Output

正确的输出:

Correct output

回答

2

行程不那么重要了,当你调用fillOval但是当你时更是如此致电drawOval。因此,我建议:

  • 呼叫fillOval为你做
  • 每个fillOval后,再改变颜色,Color.BLACK(或任何轮廓颜色,你的愿望),并调用drawOval
  • 如果最小化GUI然后恢复它,看看您的绘图会发生什么。
  • 由于这个原因,为避免NullPointerException错误,我们不建议您使用通过Swing组件上的getGraphics()调用获取的Graphics对象。这样的图形对象是短暂的。相反,教程和大多数其他类似问题会告诉你:在扩展JPanel或JComponent的类中的适当的paintComponent覆盖内。
+0

有没有办法改变笔画颜色? – Aramza

+0

@Andrew:不,笔画没有颜色 - 它不是笔画的属性。相反,它是Graphics对象的一个​​属性,你可以像你已经做的那样改变它。 –