2014-09-08 5 views
0

JButton을 확장하여 필자의 필요에 맞게 확장했습니다. 내 새 클래스 안에 하나의 JTextArea와 두 개의 JLabel 구성 요소가 있습니다. 문제는 JTextArea를 클릭 할 수 없다는 것입니다. 따라서 마우스가 JTextArea 범위에있을 때 버튼이 응답하지 않습니다. 라벨에는 아무런 문제가 없습니다.JTextArea 구성 요소가있는 사용자 정의 JButton

화면에 있습니다. 4 개의 버튼이 있습니다. 각각은 별도의 노란 사각형입니다. 마우스가 JTextArea의 회색 사각형 위에있을 때 버튼을 누를 수 없습니다. 여러 줄을 지원하기 때문에 JTextArea가 필요합니다. 마우스를 가로채는 옵션이 있습니까?

ActionListener를 JTextArea에 연결할 수는 있지만 괜찮은 것입니다. 이런 종류의 리스너를 가질 수 없습니다.

enter image description here

+2

[MCVE] (http://stackoverflow.com/help/mcve) (최소, 완료, 검증 가능한 예)를 게시하십시오. –

+2

* "여러 행을 지원하기 때문에 JTextArea가 필요합니다."* JLabel 또는 JButton도 마찬가지입니다. –

답변

2

당신은 매우 비 버튼 방식으로하는 JButton을 사용하려고 그것은 JTextArea에 개최 가진 포함한 모든 버튼처럼에서 찾고되지 않게 본다. 식별 가능한 JButton가 아닌 클릭 가능한 영역이 필요하면 대신 MouseListener를 사용해보십시오. 컨테이너 JPanel 및 JTextArea에 동일한 MouseListener를 추가해야 할 가능성이 높습니다.

+0

나는 매우 이상한 일이 있다는 것을 알고 있지만, 단순히 ActionListener를 취하고 actionPerformed 메서드로 호출을 관리하는 다른 일반 버튼이 있습니다. 나는 사건을 수집하는 일관된 방법을 찾고 있었다. 마우스 수신기에서 이벤트를 전달하는 것은 옵션이지만 시간이 오래 걸리고 복잡성이 커집니다. 그리고 언급했듯이, 새로운 JPanel 내부의 모든 구성 요소에 대해 동일한 청취자를 제공해야 할 것입니다. – Mars

2

렌더러와 편집기의 차이점을 이해하려면 Concepts: Editors and Renderers을 살펴보십시오.

렌더러는이 JTable의 표면에 "그린"단순히 구성 요소의 "고무 도장"이며 실제 부품

하지 않습니다 당신은 수, 사용자 정의 편집기를 구현해야합니다 트리거 이벤트 (귀하의 경우 MouseEvent)를 로컬 컨텍스트로 변환하십시오.

아마도 TableCellEditor#isCellEdtiable을보세요.이 셀은 이벤트 원본에 가장 가까이에있어 편집 가능한 셀이 될 수 있습니다.

JButtonHTMLString로 시드 할 수있는 모든 것을 말해 두 겠는데 여러 줄과 줄 바꿈뿐만 아니라

을 지원할 수있는 것, (` "이것은 텍스트입니다"), 당신은 심각하게 재고 할 수 있습니다 귀하의 디자인 ...

관련 문제