如何在JTextPane中插入html特殊字符

时间:2014-05-25 13:59:32

标签: java swing unicode jtextpane

我已经阅读了JTextPane上的许多线程,它让我开始使用JTextPane编写一个小文本编辑器,但是在项目中间几乎折叠了!请有人向我解释如何在文本窗格中插入一个html字符,如

JTextPane pane = new JtextPane(); 
pane.settext("¢"); 

我的问题是,如果我已经键入了一些文本,然后我使用settext mathod在同一行文本中插入一个特殊字符,则在前一个文本消失时插入特殊字符。我怎么能阻止这种情况发生?

1 个答案:

答案 0 :(得分:2)

当你想打电话给setText时,你还没说。如果您想在按下按钮时执行此操作,则只需:

  1. 从(窗口的捕获变量)窗格
  2. 中读取文本
  3. 追加您想要的角色
  4. (可选)使用grabFocus将焦点和输入符号放回文本窗格。
  5. 代码如下所示:

    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>&cent;</span>", 0, 0, HTML.Tag.SPAN);
            } catch ...
            pane.grabFocus();
        }               
    });