2011-01-26 6 views
0

내 스크립트에 문제가 있습니다.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

actionPerformed 내부 당신이 당신의 JLabel의 보류를 얻을에 setIcon()를 호출 할 필요가 ... 나는 버튼을 누를 때 (다른 표시) 새 이미지를 다시 칠하기를 원하지만 버튼이 아무것도하지 않습니다 새로운 이미지를 전달합니다. JLabel의를 얻을 수있는 몇 가지 방법이있다

, 하나는 당신이 당신의 actionPerformed 방법의 범위에 어딘가에 포함 선언 final 변수가 있는지 확인하는 것입니다, 다른 하나는 (권장하지 않음) panel2 내부에서 그것을 찾을 수 있습니다.

그 목적을 위해 본격적인 클래스를 선언하면 생성자를 통해 ActionListener에 전달할 수도 있습니다.

편집는 :

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