2011-09-09 9 views

답변

30

JList에서 MouseMotionListener을 사용하여 마우스가 입력되면이를 감지 한 다음 setCursor을 호출하여 HAND_CURSOR으로 변환하십시오.

샘플 코드 :

final JList list = new JList(new String[] {"a","b","c"}); 
list.addMouseMotionListener(new MouseMotionListener() { 
    @Override 
    public void mouseMoved(MouseEvent e) { 
     final int x = e.getX(); 
     final int y = e.getY(); 
     // only display a hand if the cursor is over the items 
     final Rectangle cellBounds = list.getCellBounds(0, list.getModel().getSize() - 1); 
     if (cellBounds != null && cellBounds.contains(x, y)) { 
      list.setCursor(new Cursor(Cursor.HAND_CURSOR)); 
     } else { 
      list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 
     } 
    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 
    } 
}); 
+0

내가 내가 목록에없는 단어를 가리 때 발생하는 것으로 커서의 변경을 원한다면? 가능한가? – sack

+1

@Mikel 커서가 목록의 항목 위에있는 경우에만 손을 표시하도록 내 대답을 업데이트했습니다. – dogbane

+0

그래도 작동하지만 조금 문제가 있습니다. 단어 옆에있는 마우스를 가리키면 손 모양의 커서가 나타납니다. 마우스 커서를 가리키면 단어 만 손 모양 커서로 나타나기를 바랍니다. – sack

관련 문제