2011-01-14 7 views
4
private void button_Clicked_download(MouseEvent e) { 
     button_dl.setEnabled(false); 
     System.out.println("Button Clicked."); 
} 

단추를 클릭하면 단추 모양이 비활성화됩니다. 그러나 단추 여전히 MouseEvent에서 코드를 실행하고 "단추 클릭 한"참조하십시오. 디버그 콘솔에서.단추 이벤트가 여전히 작동하지 않음 단추 사용 안 함

버튼을 클릭하면 코드를 무시하고 실제로 사용할 수 없도록 만들 수 있습니까? 버튼은 여전히 ​​된 MouseEvent에서 코드를 실행하고 내가 볼 그러나

+0

"swing"태그가 추가되었습니다. –

답변

10

"버튼을 클릭." 디버그 콘솔에서.

이것은 정확히 MouseListener를 JButton이 아니라 ActionListener와 함께 사용해야하는 이유입니다. 해결책은 물론 MouseListener를 없애고 대신 관심있는 JButton에 ActionListener를 추가하는 것입니다.

+1

감사합니다. 나는 ActionListener를 잊었다. 나는 그걸로 바꿨고 지금은 완벽하게 작동합니다. 고맙습니다. =) – Kyle

+0

대단히 환영합니다! –

1

MouseClickListener 대신 ActionListener를 사용해야합니다. 그렇게 이벤트가 가능하고, 마우스 수신기를 사용하여 자바에있는 버튼을 사용하지 않도록 설정하는 매우 간단한 방법이 실제로있다

1

실행됩니다 클릭 비활성화 된 경우에도

당신의 버튼을 논리적으로 클릭합니다.

class HoldListen extends MouseAdapter { 

    @Override 
    public void mousePressed(MouseEvent e) { 
     JButton bt = (JButton)e.getSource(); 

     if (!bt.isEnabled()) { 
      return; 
     } 

     // Do code 
    } 
} 

비슷한 것을 만들려고하는 동안 질문을 찾았습니다. 어떻게 해결 했나요? 모든 MouseListener 메서드는 void를 반환하므로 꽤 잘 동작합니다. 내 상황에서는 ActionListener로 돌아 가면 많은 추가 작업이 필요했지만 MouseListener는 작업에 가장 적합했습니다. 언 드드 (Release Unid)와 다른 스레드가 진행중인 시뮬레이션에서 변수를 사용하는 변수를 설정합니다.

관련 문제