2013-08-16 3 views
0

ImageIcon과 현재 이미지를 클릭하여 다른 이미지로 대체 할 addMouseListener를 사용하여 JFrame의 이미지에서 버텀을 만들려고합니다.JLabel에서 생성 된 이미지 버튼이 작동하지 않습니다.

static JPanel jp = new JPanel(); 
final JLabel jl = new JLabel(); 
final JFrame jf = new JFrame(); 

    ImageIcon image = new ImageIcon("image1.jpg"); 
    jl.setIcon(image); 
    jp.add(jl); 
    jf.add(jp); 
    jf.validate(); 

    JLabel button = new JLabel(image); 
    button.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 
      jl.setIcon(null); 
      ImageIcon image = new ImageIcon("image2.jpg"); 
      jl.setIcon(image); 
     } 
    }); 

GUI는 image1.jpg와 함께 표시되지만 버튼이 전혀 작동하지 않으며 이미지 1에서 이미지 2로 교체할지 여부도 테스트 할 수 없습니다. 창에 표시된 image1.jpg를 클릭해도 GUI는 아무런 작업도 수행하지 않습니다.

편집 : 조정 된 JLabel은 현재 최종적입니다. 다른 유사한 질문이 친밀한이 방법은 작동해야하지만 코드를 잘못 무엇인지 알아낼 수 없습니다.

+0

버튼에'ActionListener'를 사용해야합니다. –

+0

나는 액션을 명령하기 위해 이미지를 클릭 할 수있게하려고하고있다. ActionListener가 JLabel과 함께 작동하는지 확실하지 않습니다. –

+0

"버튼"변수는 어떤 종류입니까? 선언 및 초기화 방법을 보여주십시오. 제목은 JLabel임을 나타내며, 그렇다면 실제로 변수 이름이 JButton 또는 이와 유사한 것으로 제시되므로 오해의 소지가 있습니다. 귀하의 질문을 명확히 해보십시오. –

답변

0

실제로 ActionListener는 JLabel에서도 작동합니다.

아니요 JLabel에 ActionListener를 추가 할 수 없습니다.

JButton button = new JButton(...); 
button.setBorderPainted(false); 
button.setContentAreaFilled(false); 
button.addActionListener(...); 

하지만 버튼은 마우스 클릭이 모든

에서 작동하지 않습니다 : 더 쉬운 방법은 당신이 버튼에 ActionListener를 추가 할 수 JButton의이 JLabel의처럼 보이게하는 것입니다 동일한 마우스 포인트에 대해 mousePressed 및 mouseReleased가 수신 될 때 생성됩니다. 따라서 마우스를 약간 움직이면 이벤트가 생성되지 않습니다. 대신 mousePressed() 이벤트를 수신합니다.

관련 문제