我已经阅读了JTextPane上的许多线程,它让我开始使用JTextPane编写一个小文本编辑器,但是在项目中间几乎折叠了!请有人向我解释如何在文本窗格中插入一个html字符,如
JTextPane pane = new JtextPane();
pane.settext("¢");
我的问题是,如果我已经键入了一些文本,然后我使用settext
mathod在同一行文本中插入一个特殊字符,则在前一个文本消失时插入特殊字符。我怎么能阻止这种情况发生?
答案 0 :(得分:2)
当你想打电话给setText
时,你还没说。如果您想在按下按钮时执行此操作,则只需:
grabFocus
将焦点和输入符号放回文本窗格。代码如下所示:
JButton btnAdd = new JButton("add");
jPanel1.add(btnAdd);
btnAdd.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent arg0) {
String text = pane.getText();
pane.setText(text + "¢");
pane.grabFocus();
}
});
如果您正在使用HTMLDocument(您还没有发布完整代码,因此不清楚您在制作HTML时做了什么),您可以执行以下操作:
pane = new JTextPane();
jPanel1.add(pane);
final HTMLEditorKit kit = new HTMLEditorKit();
final HTMLDocument doc = new HTMLDocument();
pane.setEditorKit(kit);
pane.setDocument(doc);
...
btnAdd.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent arg0) {
int start = pane.getSelectionStart();
try {
// add a span containing the desired element inside the current paragraph or other containing element
kit.insertHTML(doc, start, "<span>¢</span>", 0, 0, HTML.Tag.SPAN);
} catch ...
pane.grabFocus();
}
});