2016-07-07 16 views
1

私はSwingでまったく新しく、その中にいくつかの数字が入ったJPanelを1つ表示しようとしています。私はクラスグラフィックスからメソッドPaintComponentをオーバーライドして描画しますが、私はそれらのそれぞれが異なる色を持っていると思います。私の問題は、JPanelの色のみを設定でき、内部のすべての図形の色が同じであることです。SWING - 同じJPanelで色が異なる

どうすればいいですか?可能であれば、すべての画像に対して1つのJPanelを作成せずに可能です。ありがとう!

編集:ここに私のコードの一部は次のとおりです。もちろん

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    g.setColor(Color.RED); 
    g.fillOval(524, 45, 34, 34); 
    g.fillOval(615, 45, 34, 34); 
    g.fillOval(396, 233, 34, 34); 
    g.fillOval(746, 233, 34, 34); 
} 

私はサークルの間の違いを作ることができない。このように、それらの間の違いは、それらを描画する別の方法がありますか?ここで

+2

のすべてのコンポーネントを再描画します私たちはあなたの適切なコードを示すことによって、あなたを助けて助けてくださいとあなたがそれを解決しようとしたことを示しているか、コードの試行であなたを混乱させるだけです。 [mcve]や[sscce](http://sscce.org)を作成し投稿することができれば最高です。これらの価値あるリンクをご覧ください。 –

+1

'setColor(Color c)'メソッドを使って別の色を設定することもできます。 –

+0

また、そうしていない場合は、図に独自の論理クラスがあり、色情報を保持し、描画するには、paintComponentの中で、Graphicsのパラメータを渡すFigureの 'public void draw(Graphics g)'を呼び出すことによって、JPanelがそれ自身をペイントするように表示することを各図に伝えます。 –

答えて

4

@Override 
protected void paintComponent(Graphics g) { 
    g.setColor(new Color(5,5,5)); 
    g.fillRect(0,0,100,100); 
    g.setColor(Color.Green); 
    g.drawRoundRect(30,30,20,20,5,5); 
    g.setColor(new Color(200,200,200)); 
    g.setFont(new Font("Eras Bold ITC", Font.BOLD, 150)); 
    g.drawString("hi",25,25); 
} 

ヒントpaintComponentメソッドの簡単な例です:

revalidate(); 
repaint(); 

がフレーム

+0

ありがとう、注釈を忘れてしまった。 –

+0

そして '保護された'。コードをもっと目に見えるようにしないでください。 1 + –

+0

ありがとう、私はそれを行うことができるか分からなかった! :)それは完璧に動作します! – paxinco

関連する問題