2016-07-17 5 views
1

私は自分のFrameに追加するカスタムJPanelクラスを持っており、常に更新します。このクラスは、無効にされたpaintComponentJButtonを持っています。 paintComponentに描画されたグラフィックに、JButtonを描画するにはどうすればよいですか?私はいつもこの​​をループで更新します。repaint()はそれですが、私はJButtonを変更しません。私のカスタムJPanelクラスは私のMainクラスのサブクラスです。JavaグラフィックのJButton infrontを描画するには?

Myパネルクラス

public class interTower extends JPanel implements ActionListener{ 
    public interTower(){ 
     setVisible(true); 
     setPreferredSize(new Dimension(SCREENWIDTH, SCREENHEIGHT)); 

     JButton interTower_back = new JButton("Back"); 
     interTower_back.setActionCommand("interTower_back"); 
     interTower_back.addActionListener(this); 
     add(interTower_back); 
    } 

    @Override 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     drawMaster(g2d); 
     g2d.dispose(); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // TODO Auto-generated method stub 

    } 
} 
+2

1) 'super.paintComponent(g);'をメソッドの最初の行に移動します。2) 'g.dispose();'作成していない 'Graphics'オブジェクトを破棄しません。 3) 'g2d'は同じグラフィックスオブジェクトです。それを処分しないでください。 3)もっと早い時期に、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 4)一般的なJava命名法(命名規則、例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'でない限り)を学び、それを一貫して使用してください。 –

+1

* "既にそうだった" *使用しているコードに「何かのようなもの」を掲示するのではなく、***実際には失敗したコードのMCVEを表示する。 –

+0

@AndrewThompsonこのコードは失敗しています – Colourfit

答えて

1

AndrewThompsonsに賢明な言葉に従うことによって、私は私の問題を修正しました!グラフィックスオブジェクトを破棄すると、ボタンのレンダリングが停止するようです。オブジェクトの両方からdispose呼び出しを削除すると、問題が解決したようです。ありがとうAndrewThompson。

関連する問題