Java:JTextPane中是否有与JTextArea中的append()相同的方法?

时间:2011-01-16 16:28:30

标签: swing netbeans-6.9 jtextfield jtextarea jtextpane

该程序允许用户在文本字段中键入命令,然后输入的任何内容将显示在文本区域中。如果它是关键字,例如是,它将变为绿色,但是我不能在文本区域中仅设置一行文本绿色,所以我需要使用文本窗格。

问题是,如果我使用文本窗格,我就不能再使用append方法了。

private final static String newline = "\n";
private void enterPressed(java.awt.event.KeyEvent evt) {                                      
    int key = evt.getKeyCode();
    if (key == KeyEvent.VK_ENTER)
    {
       String textfieldEnterdValue = textfield1.getText().toString();
       this.TextArea1.append("> "+tb1EnterdValue+newline);
       this.tb1.setText("");
       if((tb1EnterdValue.equals("yes")) )
        {
            TextArea1.setForeground(Color.green);
        }
    }

2 个答案:

答案 0 :(得分:1)

JTextPane使用Document作为模型。这对于支持使用多种颜色和字体是必要的 因此,要附加到JTextPane,您需要修改文档 可以使用以下方法:

insertString(int pos, String value, AttributeSet att)
remove(int pos, int length)

例如,这会将value附加到文档的末尾。

Document d = textPane.getDocument();
d.insertString(d.getLength(), value, null);

此外,您可能希望使用scrollRectToVisible(Rectangle)的结果来致电modelToView(int),以确保新添加的广告在屏幕上。

答案 1 :(得分:0)

我认为您需要直接在基础文档上执行此操作。

这样的事情:

String value = textfield1.getText(); // no need for toString() here!
textPane.getDocument().insertString(textPane.getCaretPosition(), value, null);