Java JTextPane.getText()不为HTML保留空白?

Java JTextPane.getText()不为HTML保留空白?,java,html,swing,whitespace,jtextpane,Java,Html,Swing,Whitespace,Jtextpane,如果我有一个内容类型设置为text/html的可编辑JTextPane,我看不到保留空白。即:如果我运行以下命令: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.html.*; public class HtmlPasteTest extends JFrame implements ActionListener { JTextPane PANE;

如果我有一个内容类型设置为text/html的可编辑JTextPane,我看不到保留空白。即:如果我运行以下命令:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.html.*;
public class HtmlPasteTest extends JFrame implements ActionListener {
    JTextPane PANE;
    public static void main(String[] args) {
        new HtmlPasteTest();
    }
    public HtmlPasteTest() {        
        HTMLEditorKit KIT = new HTMLEditorKit();
        HTMLDocument DOC = (HTMLDocument)(KIT.createDefaultDocument());
        PANE = new JTextPane();
        PANE.setContentType("text/html");
        PANE.setEditorKit(KIT);
        PANE.setDocument(DOC);
        JButton dump = new JButton("DUMP");
        dump.addActionListener(this);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(dump, BorderLayout.NORTH);
        getContentPane().add(PANE, BorderLayout.CENTER);
        setSize(600, 600);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void actionPerformed(ActionEvent e) {
                System.out.println(PANE.getText());     
    }
}
      a     b
      a     b
。。。然后键入“ab”&单击DUMP按钮,我希望看到如下内容:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.html.*;
public class HtmlPasteTest extends JFrame implements ActionListener {
    JTextPane PANE;
    public static void main(String[] args) {
        new HtmlPasteTest();
    }
    public HtmlPasteTest() {        
        HTMLEditorKit KIT = new HTMLEditorKit();
        HTMLDocument DOC = (HTMLDocument)(KIT.createDefaultDocument());
        PANE = new JTextPane();
        PANE.setContentType("text/html");
        PANE.setEditorKit(KIT);
        PANE.setDocument(DOC);
        JButton dump = new JButton("DUMP");
        dump.addActionListener(this);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(dump, BorderLayout.NORTH);
        getContentPane().add(PANE, BorderLayout.CENTER);
        setSize(600, 600);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void actionPerformed(ActionEvent e) {
                System.out.println(PANE.getText());     
    }
}
      a     b
      a     b
。。。然而,我看到的是:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.html.*;
public class HtmlPasteTest extends JFrame implements ActionListener {
    JTextPane PANE;
    public static void main(String[] args) {
        new HtmlPasteTest();
    }
    public HtmlPasteTest() {        
        HTMLEditorKit KIT = new HTMLEditorKit();
        HTMLDocument DOC = (HTMLDocument)(KIT.createDefaultDocument());
        PANE = new JTextPane();
        PANE.setContentType("text/html");
        PANE.setEditorKit(KIT);
        PANE.setDocument(DOC);
        JButton dump = new JButton("DUMP");
        dump.addActionListener(this);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(dump, BorderLayout.NORTH);
        getContentPane().add(PANE, BorderLayout.CENTER);
        setSize(600, 600);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void actionPerformed(ActionEvent e) {
                System.out.println(PANE.getText());     
    }
}
      a     b
      a     b
。。。我是不是错过了什么场景

但是,我无法通过键盘输入

输入“空格”时,您有两个不同的选项来转换它:

  • 您可以使用
    DocumentFilter
    过滤输入文档中的字符。每当您输入“空格”时,只需将
    插入文档即可。有关更多信息和示例,请阅读上Swing教程的部分
  • 您可以使用
    KeyBindings
    创建自定义操作,以便在使用空格键时插入
    。有关更多信息,请阅读上的Swing教程部分。您应该扩展
    TextAction
    以实现
    操作
  • 但是,我无法通过键盘输入

    输入“空格”时,您有两个不同的选项来转换它:

  • 您可以使用
    DocumentFilter
    过滤输入文档中的字符。每当您输入“空格”时,只需将
    插入文档即可。有关更多信息和示例,请阅读上Swing教程的部分
  • 您可以使用
    KeyBindings
    创建自定义操作,以便在使用空格键时插入
    。有关更多信息,请阅读上的Swing教程部分。您应该扩展
    TextAction
    以实现
    操作
  • 但是,我无法通过键盘输入

    输入“空格”时,您有两个不同的选项来转换它:

  • 您可以使用
    DocumentFilter
    过滤输入文档中的字符。每当您输入“空格”时,只需将
    插入文档即可。有关更多信息和示例,请阅读上Swing教程的部分
  • 您可以使用
    KeyBindings
    创建自定义操作,以便在使用空格键时插入
    。有关更多信息,请阅读上的Swing教程部分。您应该扩展
    TextAction
    以实现
    操作
  • 但是,我无法通过键盘输入

    输入“空格”时,您有两个不同的选项来转换它:

  • 您可以使用
    DocumentFilter
    过滤输入文档中的字符。每当您输入“空格”时,只需将
    插入文档即可。有关更多信息和示例,请阅读上Swing教程的部分
  • 您可以使用
    KeyBindings
    创建自定义操作,以便在使用空格键时插入
    。有关更多信息,请阅读上的Swing教程部分。您应该扩展
    TextAction
    以实现
    操作

  • 为什么希望将空间转换为不可破坏的空间?毕竟,
    U+0020
    U+00A0
    是完全不同的字符。很好的一点是——我没有这样想过。但是,我不能通过键盘输入,因此最终结果是无法检索用户输入的并发空白。。。。我不能假设文档中的并发空白是由客户端输入的,因为它们可以从其他页面粘贴到HTML中,在很多情况下,这里的空白是为了HTML源代码的可读性…也许你问错了问题?在我看来,Swing首先不应该将相邻的空白区域渲染为多个空格(在
    空白区域:pre
    上下文之外)。但根据我的经验,这无助于思考Swing的对错,Swing编程是变通编程…因此,最好的做法可能是编写自己的操作,在文档中插入不可破坏的空格或
    部分,并将其绑定到空格键。Swing编程是变通编程-事实上:-)为什么希望将空格转换为不可破坏的空格?毕竟,
    U+0020
    U+00A0
    是完全不同的字符。很好的一点是——我没有这样想过。但是,我不能通过键盘输入,因此最终结果是无法检索用户输入的并发空白。。。。我不能假设文档中的并发空白是由客户端输入的,因为它们可以从其他页面粘贴到HTML中,在很多情况下,这里的空白是为了HTML源代码的可读性…也许你问错了问题?在我看来,Swing首先不应该将相邻的空白区域渲染为多个空格(在
    空白区域:pre
    上下文之外)。但根据我的经验,这无助于思考Swing的对错,Swing编程是变通编程…因此,最好的做法可能是编写自己的操作,在文档中插入不可破坏的空格或
    部分,并将其绑定到空格键。Swing编程是变通编程-事实上:-)为什么希望将空格转换为不可破坏的空格?毕竟,
    U+0020
    U+00A0
    是完全不同的字符。很好的一点是——我没有这样想过。但是,我不能通过键盘输入,因此最终结果是无法检索用户输入的并发空白。。。。我不能假设文档中的并发空白是由客户端输入的,因为它们可以从其他页面粘贴到HTML中,在很多情况下,这里的空白是为了HTML源代码的可读性…也许您