2011-12-04 4 views
3

JList을 확장하여 항목에 toolTipText와 마우스 오른쪽 버튼으로 클릭하는 두 가지 기능을 제공했습니다. 둘 다 별도로 작동하지만 함께 사용하려고하면 MouseMoved 이벤트가 인식되지 않습니까? 아래는 새로운 청취자 방법의 용기입니다. 이러한 다양한 행사를 어떻게 협의해야합니까?JList MouseMoved and MousePressed

public class JListTT extends javax.swing.JList { 
    public JListTT() { 
     super(); 
     addMouseListener(new ttListener()); 
... 
    class ttListener extends MouseAdapter { 
     public void mouseMoved(MouseEvent e) { 
      String nodeID = bldItemNodeID(); 
      theList.setToolTipText(nodeID); 
      } 
     public void mousePressed(MouseEvent ev) {check(ev); } 
     public void mouseReleased(MouseEvent ev) {check(ev); } 
     public void mouseClicked(MouseEvent ev) {check(ev); } 
     public void check(MouseEvent ev) { 
      if (ev.isPopupTrigger()) { 
       theList.setSelectedIndex(theList.locationToIndex(ev.getPoint())); 
       menu.show(theList, ev.getX(), ev.getY()); 
      } 
     } 
    } 
+0

@ 데이브 Clemmer가 만족 – kleopatra

+0

왜 **** 당신은 정리 태그 중 하나 – mKorbel

답변

4

당신은의 MouseListener로 ttListener 개체를 추가,하지만 난 당신이 모든 MouseMotionListener로 ttListener 객체를 추가 표시되지 않습니다. 예를 들어 : 나 자신이 테스트를하지 않았다

ttListener myMouseadapter = new ttListener(); 
addMouseListener(myMouseadapter); 
addMouseMotionListener(myMouseadapter); 
+0

내가 하나의 addMouseListener를 추가 생각했다 (새 ttListener()) 모두를 달성 할 자바 명명 규칙을 배우고 그들에 충실하시기 바랍니다 addMouseListener 및 addMouseMotionListener 하위 유형,하지만이게 작동하지 않는 것 같아요! 감사합니다. – rikb

+0

@rikb : 예, MouseListener는 정적 마우스 동작 (mousePress, mouseRelease, mouseClick 등) 만 수신하지만 MouseMotionListener는 동적 마우스 이벤트를 수신합니다. 그리고 당신은 환영합니다! –

+0

기회가 생기면 [이 답변을 올바르게 표시하십시오] (http://meta.stackexchange.com/a/65088/155831)를 입력하십시오. –

2

하지만 JList의 javadoc는보고 툴팁 기능은 상자 밖으로 사용할 수 있습니다. JList#getTooltipText의 javadoc에서는 명확하게 텍스트 세트가있는 경우 , 렌더링의 힌트를 사용할 수 있도록하기 위해

오버라이드 (override) JComponent의의로 getToolTipText 방법을 말한다.

그래서 ListCellRenderer 리턴한다 tooltip가 청취자의 필요없이 JList에 표시되는이있는 getListCellRendererComponent 방법에 Component 경우.

+0

+1 기존 방법을 사용하여 툴팁을 설정합니다. – camickr

1

반드시 사용자 정의 마우스 -/motionListener와 같은 낮은 수준의 접근 방식에 대한 필요성이 아니다 : 같은 셀 당 툴팁에

  • , 로빈의 대답은 상황에 맞는 메뉴에 관해서는
  • @ 참조 JComonent는 componentPopupMenu 속성을 사용합니다. 키보드 단축키 메뉴 열기에 자동으로 응답합니다.

마우스 오른쪽 버튼으로 셀을 선택했기 때문에 "반드시 필요하지 않습니다". 그렇다면, 당신은 여전히 ​​십 년간 긴 토론 후 선택 (트리거 할의 MouseListener를 필요, 스윙하지 않습니다 -에 이상한 것 같다있는 현재의 네이티브 애플리케이션 ;-)

0

당신은

을의 mouseDragged 사용하여 달성 할 수
YourClass extends JPanel implements MouseListener{ 
    ...... 

    @Override 
    public void mouseDragged(MouseEvent e) { 
     //code go here 

    } 
}