我有以下问题:
我使用 JTextPane 显示 HTML 文档。
在我的 HTML 文本中有
(shy at w3.org)进行软连字。
我的问题是,没有出现连字符。是否有某种我不知道的标志来使用这些选项?
以下程序将显示问题:
package com.dvelop.ckue.swing;
import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
import java.awt.*;
public class SwingGui extends JFrame {
public static void main(String[] args) {
SwingGui sg = new SwingGui();
sg.setSize(new Dimension(200, 800));
sg.setPreferredSize(new Dimension(200, 800));
sg.pack();
sg.setVisible(true);
sg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private SwingGui() {
super();
setLayout(new FlowLayout());
// No "-" appears, but a linebreak
add(createField("<html>longlong<br>longlong<br>longlonglonglonglonglonglonglonglonglongWord"));
// No linebreak, but the hyphenationsymbol
add(createField("<html>longlong­longlong­longlonglonglonglonglonglonglonglonglongWord"));
// Linebreak, but not where expected and no symbol
add(createField("<html>longlong​longlong​longlonglonglonglonglonglonglonglonglongWord"));
// No linebreak, no symbol
add(createField("<html>longlonglonglonglonglonglonglonglonglonglonglonglonglongWord"));
}
private JTextPane createField(String content) {
JTextPane field1 = new JTextPane();
field1.setPreferredSize(new Dimension(100, 200));
field1.setAutoscrolls(true);
field1.setEditorKit(new HTMLEditorKit());
field1.setText(content);
return field1;
}
}
我的预期行为是,我的文本将断到下一行:
longlong-
longlong-
longlonglonglongWord
与第一个 block 看起来一样,但带有连字符。
编辑: 它适用于大多数浏览器,但我在这里不使用网络浏览器。
编辑2: 我使用 JTextPane,我不知道 Java 是否会在内部使用一些安装的 HTML 渲染引擎。
最佳答案
许多浏览器不处理该字符。最好使用实体名称 ( ­
),而不是 ISO 数字实体 ( ­
)。
但是大多数浏览器对这个实体的处理都非常糟糕。
​
只是一个zero width space character .
更简单的是:(但连字符始终可见......)
<p>longlonglong-​longlonglong</p>
你甚至可以尝试这个(但我不认为你看到你的连字符......):
<p>longlonglong­​longlonglong</p>
但我不明白为什么你在 <html>
之后插入纯文本节点,这不会减轻浏览器的任务,不是吗?
否则,您在什么浏览器上测试您的代码?因为这在最新版本的 Chrome 和 Firefox 上完美运行:
<p>longlonglong­longlonglong</p>
无论如何,您可能会对 <wbr>
tag感兴趣。 ,和this article dedicated to the soft hyphen problem ...
关于java - 在 Java HTML 感知组件中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4164991/