2011-10-18 4 views
0

私はこのようなグラフを生成するコードを記述しようとしています(図の上に描画します) )。のJava JPanelのは

私はちょうどawtとスイングを学び始めています。 3時間の仕事を使い果たした後、私は他の絵の上に線を描く方法を管理することができませんでした。

例を使って問題を説明しようとします。

私はこのような四角形を描くとしましょう:

JFrame window = new JFrame(); 
window.setLayout(null); 
window.setVisible(true); 

Graph graph = new Graph(); 
window.add(graph); 
//------------------- 
public class Graph extends JPanel { 
    .... 
    public void paintComponent (Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.white); 
     g.fillRect(150, 20, x, y); 
    } 
    .... 
} 

どのようにグラフpaintComponentメソッドで線を引くwhithoutこの白い四角の上に別の行または何か他のものを描くのですか?どのように別のJPanelを別のJPanelの上に追加すると、両方のJPanelが見えるようになりますか? (私はJPanelを使用していくつかのボタンを追加しています)

私は何を求めているのでしょうか。

ありがとうございました!

答えて

2

Graphs paintComponentメソッドで線を描くのではなく、この白い四角形の上に別の線などを描画するにはどうすればよいですか?

すべてのカスタムペイントは、paintComponent()メソッドで行う必要があります。私はなぜあなたがライン上にペイントする別のパネルを追加したいのか分かりません。シンプルにして、ペイントコードをすべて1か所に保管してください。

他のコンポーネント(JPanelなど)をパネルに追加する場合は、レイアウトマネージャを使用してコンポーネントを適切にレイアウトします。また、setOpaque(...)メソッドを使用してコンポーネントを不透明にする必要があります。

コンポーネントをレイヤーする別の方法は、JLayeredPaneを使用することです。

Swing tutorialから始めます。レイヤーペインを使用してレイアウトマネージャ

  • を使用して

    1. :上のセクションがあります。
  • +0

    リンクとクイック返信をありがとう!私はsetOpaqueで何かを試してみるつもりです。うまくいかない場合は、おそらくドキュメント全体を読むでしょう。再度、感謝します! – Alvydas

    +0

    *「なぜ絵を描く別のパネルを追加したいのか分かりません。」*そのコメントを明示的な質問にアップグレードします。 **なぜ**単一の 'paintComponent()'メソッド内にすべてのコンポーネントを描画するだけではありませんか?あなたは「痛みの世界」のために、それを別の方法で試してやろうとしています。 –

    +0

    JPanelの上にボタンを配置したいのですが、私のレイアウトを分割したり、nullレイアウトを使用したりすることはできません。この解決策は、「jpanelをjpanelに置く」という質問に答えることはできません。被写体を「ああ、でも同じ絵を描くことができます」と答えているのですが、そうです。私はjPanel上にボタンを描画し、明示的なマウスイベント処理を介してイベントを処理することができますが、もはや良い考えのようには聞こえません) – Dmitry