2011-01-16 14 views
0

Das Programm lässt den Benutzer einen Befehl in ein Textfeld eintippen, dann wird alles, was sie eingegeben haben, im Textbereich angezeigt. Wenn es sich um Keywords wie "Ja" handelt, wird es grün, aber ich kann in einem Textbereich nicht nur eine Textzeile grün setzen, deshalb muss ich einen Textbereich verwenden.Java: Gibt es eine Methode in JTextPane, die das Gleiche wie append() in JTextArea tut?

Das Problem ist, dass ich, wenn ich einen Textbereich verwende, kann ich nicht mehr die Append-Methode verwenden.

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); 
     } 
    } 

Antwort

0

Ich denke, Sie müssen das direkt auf das zugrunde liegende Dokument tun.

Etwas wie folgt aus:

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

JTextPane verwendet Document als Modell. Dies ist notwendig, um die Verwendung mehrerer Farben und Schriftarten zu unterstützen.
Um also an ein JTextPane anzuhängen, müssen Sie das Dokument ändern.
Folgende Methoden stehen zur Verfügung:

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

Zum Beispiel dieser value bis zum Ende des Dokuments angehängt werden.

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

Zusätzlich können Sie scrollRectToVisible(Rectangle) mit dem Ergebnis der modelToView(int), um sicherzustellen, die neu hinzugefügte Zeile auf dem Bildschirm aufrufen möchten.