2011-01-11 9 views
7

Die einzige Möglichkeit, die Farbe zu ändern, ist setForground(). Wenn jedoch mehrere Codezeilen vorhanden sind, wird alles grün oder schwarz. Gibt es eine andere Methode oder eine Möglichkeit, dieses Problem zu lösen? Vielen Dank!Java: Wie ändere ich die Farbe einer bestimmten Zeile oder Zeile in einem Textbereich?

int key = evt.getKeyCode(); 
    if (key == KeyEvent.VK_ENTER) 
    { 
     String tb1EnterdValue = tb1.getText().toString(); 
     if((tb1EnterdValue.equals("yes"))) 
     { 
      TextArea1.setForeground(Color.green); 
    else 
     { 
       TextArea1.setForeground(Color.lightGray); 
     } 
     this.TextArea1.append(">"+tb1EnterdValue+newline); 
     this.tb1.setText(""); 

Antwort

3

Ich würde ein JTextPane mit "Attributen" (nicht HTML) für die Änderung der Textfarbe verwenden. Der Abschnitt aus dem Swing-Tutorial zu Text Component Features enthält ein Arbeitsbeispiel für den Einstieg.

Ich habe versucht, JTextPanes vor, aber sie werden mich nicht append verwenden lassen() -Methode

Die append() -Methode ist nur eine bequeme Methode, die Sie Text am Ende hinzufügen können von das Dokument. Sie können auch eine eigene append() Methode für ein JTextPane implementieren. Sehen Sie sich den Quellcode für JTextArea an und kopieren Sie den Code von seiner append() -Methode.

+0

Danke, aber wie bekomme ich den Quelltext von JTextArea? – Kevin

+0

Der Quellcode wird mit dem JDK geliefert. Es ist in einer Datei namens src.zip. – camickr

+0

Verstanden, aber wo kopiere ich diesen Code? – Kevin

0

Ist das Swing und verwenden Sie JTextAreas? Wenn dies der Fall ist, geben Sie Ihre Frage bitte genau an und verwenden Sie keine JTextArea, da dies nicht die ideale Textkomponente ist, wenn Sie mehrere Formate innerhalb einer Textkomponente verwenden möchten. Betrachten Sie stattdessen die Verwendung eines JTextPane oder JEditorPane. Die Tutorials zeigen Ihnen, wie Sie diese verwenden und wann sie verwendet werden sollten.

+0

Ja, es ist ein Swing und JTextArea. Ich habe JTextPanes schon einmal ausprobiert, aber sie lassen mich nicht die Methode append() verwenden und ich muss jeden Befehl auf eine neue Zeile setzen. – Kevin

+0

Das Fehlen von Anhängen sollte Sie nicht daran hindern, die anderen Textkomponenten zu verwenden, da Sie dem Dokument der Komponente Text hinzufügen könnten. –

+0

Wie mache ich das? Weil ich den Cursor brauche, um nach jedem Eintrag in den Text eine neue Zeile zu machen - was auch immer. Wie gibt es irgendwelche Methoden, die append ähnlich sind? – Kevin