2009-07-24 7 views
6

현재 마우스가 있던 곳을 기준으로 JEditorPane의 텍스트 부분에서 위치를 찾아야하는 문제를 해결하고 있습니다. 클릭 함.자바의 JEditorPane에서 마우스 위치를 문자 위치로 변환하는 방법 Swing

기본적으로 사용자가 단어를 마우스 오른쪽 버튼으로 클릭하면 단어가 무엇인지 알아야합니다. 이렇게하려면 사용자가 클릭 한 텍스트의 위치를 ​​알아야합니다. mousePressed 메서드에 전달 된 MouseEvent에서 마우스 위치를 쉽게 얻을 수 있다는 것을 알고 있으며 텍스트 조각에서 문자 인덱스를 얻기 위해 이것을 변환 할 수 있다고 들었습니다. 그러나 어떻게해야하는지 알 수 없습니다. 이.

JEditorPane에서 viewToModel() 메서드를 시도했지만 텍스트의 잘못된 위치를 다시 돌려 주므로 잘못 사용하거나이 방법으로 작동하지 않습니다.

아이디어가 있으십니까?

public void mouseClicked(MouseEvent e) { 
    JEditorPane editor = (JEditorPane) e.getSource(); 
    Point pt = new Point(e.getX(), e.getY()); 
    int pos = editor.viewToModel(pt); 
    // whatever you need to do here 
} 

답변

9

이 작업을 수행하려면 올바른 방법입니다. viewToModel()이 정확히 여기서 내가 사용해야하는 것으로 밝혀졌습니다. 문제는 내가 잘못된 Point를 전달하고 있다는 것입니다.

MouseEvent에서 실제로 getPoint() 메소드를 사용해야하는 시점을 알아 내기 위해 getLocationOnScreen() 메서드를 사용했습니다.

이 질문을 읽은 모든 사람에게 감사드립니다.

+0

감사합니다. 나는 아래 답변을 통해 알 수 있듯이 대답을 받아 들였습니다. – Scottm

+0

@ ChssPly76 어떻게 든 JTable 대신 사용할 수 있습니까? – Igor

+0

viewToModel() 메서드는보다 일반적인 클래스 JTextComponent에 의해 이미 제공되고 있습니다. JTable의 경우 Cell을 먼저 반환하는 다른 메서드가 있으며 셀 렌더러/편집기에 따라 적절한 메서드를 호출해야합니다. –

0

나는 내 자신이 문제를 해결했습니다 viewToModel()를 호출