2010-09-19 2 views
1

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

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

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

Также, если это возможно, существует ли способ изменить, где JComponent расположен внутри с остальной частью текста, например, с центрированным встроенным?

ответ

1

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

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

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

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

+0

К сожалению, http://sscce.org/ кажется невосприимчивым в последнее время; http://pscode.org/sscce.html - альтернатива. – trashgod

+0

Это похоже на работу, спасибо. –

+0

@trashgod, спасибо. – camickr

Смежные вопросы