2011-12-20 2 views
1

JCheckBox의 텍스트를 클릭하면 체크 상태가 변경되지 않으므로 JToggleButton에서 상속되므로 확인란을 클릭해도 텍스트가 클릭되는 것과 같은 효과가 있습니다. 하지만 이제 다음과 같이 작동하는 이 필요합니다.JCheckBox는

  • 확인란을 클릭합니다. 확인란을 선택 또는 선택 취소합니다.
  • 텍스트 클릭 : 확인란을 업데이트하지 않지만 ActionEvent을 내 보냅니다.

은 현재 내가 JCheckBoxprocessMouseEvent() 기능을 무시하여 추한 해킹을 사용하고, 마우스가 CheckBox의 왼쪽 부분을 클릭하는 경우에만 super에 전파. 코드는 다음과 같습니다.

public class MyCheckBox extends JCheckBox { 

    @Override 
    protected void processMouseEvent(MouseEvent e) { 
     if (e.getX() < this.getHeight()) { 
      super.processMouseEvent(e); 
     } else { 
      this.fireActionPerformed(new ActionEvent(this, 0, "click on text")) 
     } 
    } 
} 

더 간단한 해결책이 있습니까?

+2

* "현재 못생긴 해킹을 사용하고 있습니다."* 사용성면에서보기 흉한 사용자 인터페이스를 구현하려고 시도하고 있습니다. 따라서이 작업을하지 않는 것이 좋습니다! –

+0

텍스트를 클릭 할 수 있음을 사용자에게 알리는 툴팁이 있습니까? – trashgod

답변

3

텍스트가없는 JCheckBox와 자체 청취자가있는 텍스트 용 별도의 JLabel을 추가하십시오.

+0

위대한 마음은 똑같이 생각한다. 악몽에있는 – mKorbel

+0

(그 쓸모없는 괴물 구조 ;-) 기분의 가난한 사용자들에 대해? – kleopatra