2016-09-28 108 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對象的一個​​屬性,你可以像你已經做的那樣改變它。 –