положение каретки встроенного компонента Swing в JTextPane

У меня есть JTextPane, который использует пользовательский HTMLEditorKit для встраивания компонента Swing при использовании тега HTML. Когда я нажимаю на этот компонент, я хочу, чтобы позиция курсора обновлялась до местоположения этого компонента. Я могу получить событие фокуса в элементе управления, но я не знаю, как установить позицию курсора в положение этого компонента. Кто-нибудь знает, как?


person Rocky Pulley    schedule 16.05.2013    source источник
comment
ищите в ответах @StanislavL   -  person mKorbel    schedule 17.05.2013
comment
@mKorbel спасибо, но я не помню, чтобы отвечал на подобный вопрос :-)   -  person StanislavL    schedule 17.05.2013


Ответы (2)


Вы можете получить родителя компонента, на который нажали, и использовать parent.getBounds(). Возвращаемый прямоугольник является позицией в JTextPane. Используйте метод viewToModel() из JTextPane, чтобы получить положение каретки для местоположения координат.

person StanislavL    schedule 17.05.2013

Вам понадобится позиция символа встроенного компонента в содержимом JTextPane; без дополнительных деталей невозможно угадать, как вы это определите. Однако, как только вы знаете позицию символа компонента, это так же просто, как:

myTextPane.setCaretPosition(characterIndexOfEmbeddedComponent);

См.: http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#setCaretPosition(int)

person Adrian    schedule 16.05.2013