Вставка встроенных JComponents в JTextPane?

Я работаю над проектом, который должен иметь возможность вставлять JComponents в JTextPane вместе с обычным текстом. В настоящее время я использую JTextPane.insertComponent(Component) для добавления JComponents, однако они, похоже, добавляются время от времени без реальной организации. Наконец я понял, что он вставляет его везде, где находится карат, поэтому я попытался установить его в конце текста. Однако, когда я выполняю:

int len = txtConsole.getText().length();
txtConsole.setCaretPosition(len - 1);

Я получаю сообщение об ошибке, говорящее, что местоположение недействительно. Есть ли простой или лучший способ вставить JComponents в конец последней строки JTextPane?

Кроме того, если вышеизложенное возможно, есть ли способ изменить расположение JComponent внутри остальной части текста, например, по центру?


person 404 Not Found    schedule 19.09.2010    source источник


Ответы (1)


У меня работает следующий код:

int offset = textPane.getDocument().getLength();
textPane.setCaretPosition(offset);
textPane.insertComponent( ... );

Убедитесь, что ваш код выполняется в EDT.

Если у вас возникнут дополнительные проблемы, опубликуйте свой SSCCE, демонстрирующий проблему.

person camickr    schedule 19.09.2010
comment
К сожалению, sscce.org в последнее время не отвечает; Альтернативой является pscode.org/sscce.html. - person trashgod; 19.09.2010
comment
Ой, слишком рано сказали: groups.google.com/ группа/comp.lang.java.programmer/browse_frm/ - person trashgod; 20.09.2010