2010-12-31 5 views
4

이 질문을 쓰는 동안 (매우 기적적으로) 나 자신의 질문에 답변했지만, 나는 모든 사람들과 공유하고 싶었다. 나는 이것이 진실한 "질문"이어야한다는 것을 이해한다. 그러나 그것은 나를위한 기념비적 인 발견이었다. 그러나 아래에 "질문"이 있지만 대답 할 수 있습니다.누르거나 선택한 상태에서 JToggleButton의 ImageIcon 조작하기

JToggleButton을 확장하는 사용자 정의 클래스를 만들었습니다. 이 클래스에서는, 디폴트의 MouseListener를 모두 삭제하고 있으므로, 오브젝트 준비가 완료되어 있다고 판단되었을 때만 마우스 액션을 받아 들일 것입니다. 내가 가진 문제는 JToggleButtons ImageIcon (setIcon()으로 설정)을 조작하는 것이 었습니다. 버튼이 선택되도록 (듯이)했을 때에, 버튼이 화면 상에 표시되지 않는 경우 (JScrollPane에 의해 보이지 않는 경우), ImageIcon가 사라집니다. 마찬가지로 단추를 선택한 상태에서 ImageIcon을 수정하면 ImageIcon도 사라집니다.

내 사용자 지정 MouseListener에서 getModel.setPressed (true) 대신 getModel.setSelected (true)를 사용하고있는 것으로 나타났습니다. 분명히 나는 ​​선택과 압박 사이의 차이를 분명히 이해하지 못했지만, 내 문제가 해결되었다고 말하는 것으로 충분하다. 그러므로 나의 "질문"은이 두 용어에 대한 설명이 될 것입니다.

요약하면 setPressed()를 사용할 때 버튼에 setSelected()를 사용하지 마십시오. 이 고통을 추적하는 것은 얼마나 고통스러운 일입니까! 진심으로 이것이 다른 사람을 돕기를 바랍니다. 이메일은 유효하지만 스팸을 포착합니다.

+0

http://download.oracle.com/javase/6/docs/api/javax/swing/ButtonModel.html – trashgod

+0

고마워요. 그게 내가 처음에는 setPressed를 찾지 만 보았을 때입니다. 두 번째로, isSelected (getSelected 또는 setSelected에 대해 동일한 정보가 제공되지 않음)를보고 약간의 이해가 가능합니다. –

답변

2

좋아, 다시 내 자신의 대답을 발견, 나는이 문제를 공유하고 닫을 줄 알았는데. 체크 박스/라디오 아이콘이 있으면 버튼이 "선택"됩니다. 버튼을 누르면 버튼이 눌려집니다. JToggleButtons는 버튼을 적절히 "클릭하고"누르기 위해 두 속성을 조합하여 사용하는 것으로 나타납니다.

ImageIcons가 사라지는 이유는 내가 실수로 setPressedIcon()/setPressed() 및 setSelectedIcon()/setSelected()를 혼합했기 때문입니다. 용어를 혼동하고 그 차이를 인식하지 못했기 때문에, 필자는 사용법에 일관성이 없었다.