2011-01-16 2 views
0

Программа позволяет пользователю вводить команду в текстовое поле, тогда все, что они набрали, будет отображаться в текстовой области. Если это ключевые слова, такие как да, он станет зеленым, однако я не могу установить только одну строку текста в текстовой области, поэтому мне нужно использовать текстовую панель.Java: Есть ли какой-либо метод в JTextPane, который делает то же самое, что append() в JTextArea?

Проблема в том, что если я использую текстовое поле, я больше не могу использовать метод 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); 
     } 
    } 

ответ

0

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

Что-то вроде этого:

 
String value = textfield1.getText(); // no need for toString() here! 
textPane.getDocument().insertString(textPane.getCaretPosition(), value, null); 
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) обеспечить новодобавленные линии на экране.