2016-09-28 13 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オブジェクトを使用することはお勧めしません。このようなGraphicsオブジェクトは短命です。代わりに、チュートリアルやその他の同様の質問から、適切なpaintComponentの中で、JPanelまたはJComponentを拡張するクラスの中でオーバーライドすることが分かります。
+0

ストロークの色を変更する方法はありますか? – Aramza

+0

@Andrew:いいえ、ストロークには色がありません。ストロークのプロパティではありません。代わりに、それはGraphicsオブジェクトのプロパティで、既に行っているように変更します。 –

関連する問題