2009-12-21 4 views

답변

4

나는 그것을 직접 발견했다 ... 비록 클린턴에게 대답 해 주셔서 감사합니다. 여기에 내가 사용한 적이있는 작업은 다음과 같습니다

먼저 JList의를 만들 ... 모두들 그렇게하는 방법을 알고 ... 그런 다음 나는 setDropTarget 추가 한 :

lstFiles.setDropTarget(new DropTarget() 
{ 
    @Override 
    public synchronized void drop(DropTargetDropEvent dtde) 
    { 
     this.changeToNormal(); 
     //handle the drop... [...] 
    } 

    @Override 
    public synchronized void dragEnter(DropTargetDragEvent dtde) 
    { 
     //Change cursor... 
     Cursor cursor = new Cursor(Cursor.HAND_CURSOR); 
     setCursor(cursor); 

     //Change JList background... 
     lstFiles.setBackground(Color.LIGHT_GRAY); 
    } 

    @Override 
    public synchronized void dragExit(DropTargetEvent dtde) 
    { 
     this.changeToNormal(); 
    } 

    private void changeToNormal() 
    { 
     //Set cursor to default. 
     Cursor cursor = new Cursor(Cursor.DEFAULT_CURSOR); 
     setCursor(cursor); 

     //Set background to normal... 
     lstFiles.setBackground(Color.WHITE); 
    } 
}); 
+0

아 하! 잘 하셨어요! – Clinton

1

다음은 사용자가 JList 위로 마우스를 이동 한 경우에만 커서를 변경합니다.

mouse listenersetCursor 메서드를 사용하여 구성 요소 (예 : JList)에 마우스를 올리면 커서를 변경할 수 있습니다.

기본적으로 마우스 수신기를 JList에 추가하고 사용자가 응용 프로그램의 구성 요소 (mouseEntered 및 mouseExit) 위에 마우스를 놓을 때 setCursor를 사용하여 커서를 변경하기 만하면됩니다. JList에 무언가가 드래그되고있을 때에 만 커서를 변경하기 위해 끌어서 놓기 코드에 대한 약간의 질문을해야 할 수도 있습니다.

희망이 조금 도움이됩니다.

+1

글쎄, 나는 그것을 시도했다. 다만, JList에 파일 또는 폴더를 드러그했을 때에 MouseListener는 등록되지 않습니다. Java 응용 프로그램이 포 그라운드에 있고 '선택됨'에도 불구하고. 감사합니다. . – Gianni

+0

@ 지아니 - "등록하지 않겠다"라는 말은 어떤 이벤트도 수신하지 않는다는 뜻입니까? – Clinton

+0

실제로. 그것은 mouseover 이벤트를 트리거하지 않습니다. – Gianni

관련 문제