2009-08-22 20 views
2

JPanelのpaintComponent()メソッドをオーバーライドすることによって、JPanel上にグラフを描画する必要があります。JPanelを描画してJFrameにJPanelを追加する

JPanelをJFrame上にドラッグ&ドロップするときにnetbeansを使用してguiを設計する際に、プライベート変数JPanelオブジェクトを作成してコードを生成します。そのような場合、どうすればそのメソッドをオーバーライドできますか?

または、JPanelを拡張してクラスを作成し、それをペイントするメソッドをオーバーライドすると、新しいJFrameを作成する必要があります。それにJPanelを追加します。

JFrame fr =新しいJFrame(); fr.add(ペイン)。 // paneは、JPanelを描画する場所を継承するクラスのオブジェクトです。 fr.setVisible(true);私は、NetBeansでのJFrameを拡張し、自動作成されたクラスの参照を取得し、リファレンスのaddメソッドを使用してのJPanelを追加することを使用する場合、それは動作します。この場合

...

は、しかし、それはdoesnのですトンの仕事...

class x extends JPanel 
{ 
     paintComponent(Graphics g){   //overridden method 

      //my code for drawing say lines goes here.. 
      } 
} 

class y extends Thread 
{ 
     z obj; 

     y(z obj){ 

      this.obj=obj; 
      } 
     public void run(){ 

       x pane=new x(); 
       pane.setVisible(true); 
       obj.add(pane); 
       obj.setVisible(true);   //im not getting the pane visible here.. if i created a new JFrame class here as i said earlier and added the pane to it i can see it.. 
      } 
} 

class z extends JFrame 
{ 
      z(){//code generated by netbeans} 

      public static void main(String args[]) 
      { 


        new y(new z()).start(); 
      } 
} 

それは何のエラーを示していないが、私は唯一のJFrameが表示されているプログラムを実行すると、質問が愚かである場合.. JPanelのは...

恩赦を私に示されていません。..イム初心者..

ありがとうございます...

答えて

2

行動は予測不可能である必要があります。すべてのUIの仕事はイベントディスパッチスレッド上で実行する必要があります(EDT )。あなたのコードは次のようになります。テーマについて

public static void main(String args[]) { 
    SwingUtilities.invokeLater(new Runnable() { 
     void run() 
     { 
      JFrame z = new JFrame(); 
      z.add(new X()); // works only in java 6 
      //z.getContentPane().add(new X()); // works in any version of java 
      z.pack(); // assuming your pane has preferred size 
      z.setVisible(true); 

     } 
    }); 
} 

もっとここにある: http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html

1

あなたのコードはかなり難読化されています。とにかく、代わりに

obj.add(pane); 

のあなたはSwingの開発の主なルールに違反しているため、コードの

obj.getContentPane().add(pane); 
-1

あなたはSwingを使っ初心者ているようですね。ただし、ライブラリJXLayerを使用すると、コンポーネントのペイントが非常に簡単で直感的になります

デモとサンプルコードを確認してください。

それ以外の場合、優秀なJFreeChartは素晴らしい無料のJavaグラフ(および可視化)ライブラリ

です
関連する問題