0

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

问题是,如果我使用文本窗格,我就不能再使用 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);
        }
    }
4

2 回答 2

1

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

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

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

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

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

于 2011-01-19T15:10:33.147 回答
0

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

像这样的东西:

字符串值 = textfield1.getText(); // 这里不需要 toString()!
textPane.getDocument().insertString(textPane.getCaretPosition(), value, null);
于 2011-01-16T17:03:14.060 回答