2

私は問題があります。HTMLEditorKit空白を無視しているようです。私のサンプルコードがあります:

public class TestEditor extends JFrame {

public TestEditor(){
    createConnection();
    createGUI();
}
private void createGUI(){
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JScrollPane scroll1=new JScrollPane(text);
    JScrollPane scroll2=new JScrollPane(html);
    JSplitPane split=new JSplitPane();
    split.setLeftComponent(scroll1);
    split.setRightComponent(scroll2);
    split.setDividerLocation(0.5);
    split.setResizeWeight(0.5);
    getContentPane().add(split);
    setTitle("Test");
    setPreferredSize(new Dimension(600,300));
    pack();
}
private void createConnection(){
    text=new JTextPane();
    html=new JTextPane();
    html.setContentType("text/html");
    html.getStyledDocument().addDocumentListener(new DocumentListener() {
        @Override
        public void insertUpdate(DocumentEvent e) {
            update();
        }
        @Override
        public void removeUpdate(DocumentEvent e) {
            update();
        }
        @Override
        public void changedUpdate(DocumentEvent e) {
            update();
        }
        private void update(){
            if(fromText) return;
            fromHtml=true;
            text.setText(html.getText());
            fromHtml=false;
        }
    });
    text.getStyledDocument().addDocumentListener(new DocumentListener() {
        @Override
        public void insertUpdate(DocumentEvent e) {
            update();
        }
        @Override
        public void removeUpdate(DocumentEvent e) {
            update();
        }
        @Override
        public void changedUpdate(DocumentEvent e) {
            update();
        }
        private void update(){
            if(fromHtml) return;
            fromText=true;
            html.setText(text.getText());
            fromText=false;
        }
    });
}
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new TestEditor().setVisible(true);
        }
    });
}
private JTextPane text;
private JTextPane html;
private boolean fromHtml, fromText;
}

JTextPaneこのコードは、2 つのテキスト フィールドを含む単純なアプリケーションを作成します。ユーザーは右側のエディターに書き込むことができ、左側に HTML コードが表示されます。さらに、彼はコードを編集し、右側で変更を確認できます。

問題があります。私がテキストを書いたとしましょう

"     aaaa"

右側のエディター (「aaaa」の前に 5 つのスペース)。これはそれ自体をよく表します。ただし、HTML エディター (左側) で次の「a」を追加すると、5 つのスペースが失われ、右側に「aaaaa」しか表示されません。

私の5つのスペースが失われないように、この問題を解決する方法はありますか?

4

4 に答える 4

1

これを試して:

html.setText(text.getText().replace("  "," "));
于 2015-08-04T07:36:38.150 に答える