JTextPane с HTMLEditorkit не поддерживает стиль выравнивания текста при использовании с тегом <pre> - PullRequest
1 голос
/ 13 октября 2011

Фрагмент кода ниже при запуске не отображает текст в JTextPane. Стиль выравнивания текста в pre tag совсем не соблюдается. Если стиль выравнивания текста удален ИЛИ, если для него установлено значение «влево», текст отображается в JTextPane. Мы используем тег «pre» для сохранения пробелов и отступов табуляции.

Мои требования:

1) Должен быть в состоянии видеть текст по центру / по правому краю.

2) Пробелы и табуляция в текстовой строке должны отображаться как на JTextPane.

Любая помощь будет наиболее ценной. !!

<code>import javax.swing.text.BadLocationException;
import javax.swing.text.Document;

public class TestHTML {
public static void main(String[] args){
    javax.swing.JTextPane editor = new javax.swing.JTextPane();
    editor.setEditorKit(new javax.swing.text.html.HTMLEditorKit());
    String htmlText = "<html><head></head><body>" +
            "<pre style='text-align:center;color:blue;'>   " +
            "Hello   Spaced            World       !!!
"+ ""; editor.setText (HTMLText); Document doc = editor.getDocument (); пытаться { System.out.println (doc.getText (0, doc.getLength ())); } catch (BadLocationException e) { // TODO автоматически сгенерированный блок catch e.printStackTrace (); } javax.swing.JFrame f = new javax.swing.JFrame («Редактор HTML»); f.setDefaultCloseOperation (javax.swing.JFrame.EXIT_ON_CLOSE); . F.getContentPane () добавить (редактор); f.pack (); f.setVisible (истина); }

}

1 Ответ

4 голосов
/ 13 октября 2011

Я подозреваю, что элемент pre изначально предназначался для выравнивания по левому краю (для текста слева направо), и поэтому Swing игнорирует запрос.Почему бы не попробовать вместо этого поставить code внутри div?Vis:

Test HTML

import javax.swing.text.*;
import javax.swing.*;

public class TestHTML {

    public static void main(String[] args){
        JTextPane editor = new JTextPane();
        editor.setContentType("text/html");
        String htmlText = "<html><head></head><body>" +
            "<div style='text-align: center;'>" +
            "<code style='color:blue;'>   " +
            "Hello   SpacedWorld   !!!</code>" +
            "</div>" +
            "</body></html>";
        editor.setText(htmlText);

        JFrame f = new JFrame("HTML Editor");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(editor);
        f.pack();
        f.setVisible(true);
    }
}

Я только что понял, что пробелы между словами были сжаты до 1. Замените каждое на &nbsp;, чтобы исправить это.*

...