2011-01-26 18 views
0

スクリプトに問題があります。私はあなたのJLabelのホールドを取得し、上setIcon()を呼び出す必要がactionPerformedインサイドJavaの再描画イメージ

ActionListener one = new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       panel2.revalidate(); 
       panel2.repaint(); 
      } 
     }; 

     btn1.addActionListener(one); 



     JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage()); 

     panel2.add(lab1); 
     panel2.add(test1); 
     panel2.add(pn5); 
     panel2.add(pn1); 
     panel2.add(btn1); 
+0

実際には、ボタンのActionListenerのは** **何かをしない - それはあなたのJPanelを再描画します。しかし、表示されているイメージは変更されないので、再描画すると効果はありません。私はfdに同意します - あなたの画像をJLabelのアイコンで表示します。 JPanelは必要に応じてこのJLabelを保持できます。 –

+0

私はあなたが甘いものを理解していない。申し訳ありませんが、 – anvd

答えて

5

...ボタンが押されたときに(別の1が示されている)は、新しいイメージを塗り替えるが、ボタンは何もしませんしたいです新しいイメージを渡します。 JLabelのを取得するためのいくつかの方法があります

は、一つは、あなたのactionPerformed法の適用範囲のどこかにそれを含めるように宣言final変数を持っていることを確認することであり、もう一つは、(推奨されません)panel2の内側からそれを見つけることです。

その目的で本格的なクラスを宣言した場合は、コンストラクタを使用してActionListenerに渡すこともできます。

EDITは:

final JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage()); 

ActionListener one = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     // Get 'anotherIcon' from somewhere, presumably from a similar 
     // place to where you retrieved the initial icon 
     test1.setIcon(anotherIcon); 
    } 
}; 

btn1.addActionListener(one); 

panel2.add(lab1); 
panel2.add(test1); 
panel2.add(pn5); 
panel2.add(pn1); 
panel2.add(btn1); 
+0

申し訳ありませんが、私はあなたが私に例を示すことができますあなたが示唆したものを理解していない? – anvd

+0

例を追加 –

+0

本当にありがとうございます、ありがとう、問題解決済み – anvd