Java JTextPane.getText()不为HTML保留空白?
如果我有一个内容类型设置为text/html的可编辑JTextPane,我看不到保留空白。即:如果我运行以下命令: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;
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源代码的可读性…也许您