Первого выпуска: Прикрепление к конкретной строкеНесколько вопросов добавляющих к JTextPane
Я пытаюсь добавить к конкретной строке в JTextPane с использованием методы getStyledDocument
. Например:
try {
displayResults.getStyledDocument().insertString(5,"Hello",null);
} catch (BadLocationException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
}
кажется, что смещение 5
только смещает его 5 пробелов по горизонтали. Есть ли другой метод, отличный от insertString
, который может достичь того, что я пытаюсь сделать? Это также становится проблемой, когда я пытаюсь выводить строки из таблицы Excel в нисходящем направлении. Я прибегал к добавлению "\n"
до того, как определенная строка, которую я хочу вывести.
try {
displayResults.getStyledDocument().insertString(5,"\n + Hello",null);
} catch (BadLocationException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
}
Второй выпуск: Добавляя с подстрочным использованием HTML кода
Некоторые из моих переменных из входного файл Excel имеет индексы, так что я пытаюсь вывести их в JTextPane с использованием синтаксиса HTML. Я попытался использовать метод .setContentType("text/html")
дважды. Первый был до получения styledDocument
. Без приведенного выше утверждения try-catch работает setContentType("text/html")
, но как только я попытаюсь реализовать вышеприведенный выше пример try-catch, тип контента возвращается к умолчанию.
Я нашел следующий вопрос на StackOverflow, чтобы быть полезным:
Я пытался использовать решение в вышеуказанной ссылке таким образом:
HTMLDocument doc=(HTMLDocument) displayResults.getStyledDocument();
try {
doc.insertAfterEnd(doc.getCharacterElement(doc.getLength()),s1);
} catch (BadLocationException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
}
}
Однако я получаю ошибка для этого, которая говорит мне:
Exception in thread "AWT-EventQueue-1" java.lang.ClassCastException: javax.swing.text.DefaultStyledDocument cannot be cast to javax.swing.text.html.HTMLDocument
MY ПОЛНЫЙ КОД
private void fullShapeTypesValueChanged(javax.swing.event.ListSelectionEvent evt) {
StoreData d = new StoreData(); // Class of data
SubstringGenerator gen = new SubstringGenerator();
labels = d.getLabels(); // Get the headers of each excel column
for (int i = 76; i >= 0 ; i--){
int character = 0; // variable to help determine the number of characters of the label
String s1 = "";
String s2 = "";
String s3 = "";
character = labels[i].length();
/* Any characters after the first one
* will be converted to subscript using HTML.
* second variable in gen.subscriptGen(a, b) --> "b" will be converted to
* <html><sub>b</sub></html>
*/
switch(character){
case 1:
s2 = labels[i];
s1 = s2;
break;
case 2:
case 3:
case 4:
case 5:
s3 = gen.subscriptGen(s2, labels[i].substring(1));
s1 = s3;
break;
}
HTMLDocument doc=(HTMLDocument) displayResults.getStyledDocument();
try {
doc.insertAfterEnd(doc.getCharacterElement(doc.getLength()),s1);
} catch (BadLocationException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ShapeData.class.getName()).log(Level.SEVERE, null, ex);
}
}
displayResults.setContentType("text/html");
}