Java: есть ли метод в JTextPane, который делает то же самое, что и append () в JTextArea? - PullRequest
0 голосов
/ 16 января 2011

Программа позволяет пользователю вводить команды в текстовом поле, тогда все, что они ввели, будет показано в текстовой области.Если это такие ключевые слова, как yes, он станет зеленым, однако я не могу установить только одну строку текста зеленым в текстовой области, поэтому мне нужно использовать текстовую панель.

Проблема в том, что если я использую текстпанель Я больше не могу использовать метод добавления.

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 ]

1 голос
/ 19 января 2011

JTextPane использует Документ в качестве модели.Это необходимо для поддержки использования нескольких цветов и шрифтов.
Таким образом, чтобы добавить JTextPane, необходимо изменить документ.
Доступны следующие методы:

insertString(int pos, строковое значение, AttributeSet att)
remove (int pos, int length)

Например, это добавит value к концуdocument.

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

Кроме того, вы можете вызвать scrollRectToVisible (Rectangle) с результатом modelToView (int) , чтобы убедиться, что вновь добавленная строка включенаэкран.

0 голосов
/ 16 января 2011

Я думаю, вам нужно будет сделать это непосредственно в базовом документе.

Примерно так:

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