felix: JTextPane

Hallo Freunde der Nacht,

ich hab ein kleines Problem, wo mir einfach die Idee fehlt. Ich denke oder hoffe, dass es nur ein kleines Problem is.. :)

Also folgendes:
 Ich habe ein kleines Java-Programm geschrieben, in dem ich die Vorgänge protokollieren will, d.h. ich hab mir ein Statusausgabefenster gebastetel, in dem das Programm ausgibt, was gerade geschehen ist. Nun hab ich aber das Problem, dass, wenn ich die letzte Nachricht oben einfüge und so viel Text drinn steht, dass automatisch Scrollbars hinzugefügt werden, er mir immer nach unten scrollt. Nochma kurz:

- neue Nachrichten werden oben eigefügt
 - bei zuviel Text -> Scrollbars
 - Text wird nach unten (also zur 1. Nachricht) gescrollt

Nun die entscheidente Frage:

Wie kann ich die Anzeige überzeugen, noch oben zu scrollen?

Hier mal ein bißchen Quellcode, vielleicht Hilft es ja jemanden:

bla.bla..bla...

//JPanel
  JPanel panelStatus = new JPanel(true);

//Textarea
  JTextPane taStatus = new JTextPane();
  taStatus.setEditable(false);

taStatus.setText("  >> Programm gestartet");

//ScrollPane
  JScrollPane spStatus = new JScrollPane(taStatus);
  spStatus.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  spStatus.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

panelStatus.add(spStatus);
  this.add(panelStatus);

bla.bla..bla...

public void addMessage(String message){
  taStatus.setText(" " + message + "\n" + taStatus.getText());
}

Ich hoffe auf schnelle Antwort, auch oder besser weil es schon so spät is. Ich will schliesslich auch noch ins Bett..

Dank Euch

  1. Ach und mal noch was ganz anderes zum Thema JTextPane.

    Wie kann ich eigentlich Text mittels HTML formatieren, vorallem so,
     dass ich es auch angezeigt bekomme?

    Kurzes Beispiel:

    String message = "<html>  >> Programm <b>geladen</b> </html>";

    public void addMessage(String message){
       taStatus.setText(" " + message + "\n" + taStatus.getText());
    }

    Das will er aber nicht. :( Ich hab mit dem JTextPane bis jetzt noch nie gearbeitet, daher fehlen mir da die Ideen. Ich will eigentlich nur mein Status-Nachrichten bissl formatieren.

    Vielleicht kann ja jemande ma bissl Code posten, damit ich eine Vorstellung hab, wie ich das machen muss.. Aber so in der Art wie oben sollte es sein, dass ich nur eine (formatierte) Zeile an die Methode übergebe. Der Rest kann ja dort passieren..

    Danke nochma..

    1. Morgäähn,

      Ach und mal noch was ganz anderes zum Thema JTextPane.

      Wie kann ich eigentlich Text mittels HTML formatieren, vorallem so,
      dass ich es auch angezeigt bekomme?

      für sowas gibt's in Java JEditorPane und HTMLKit:

        
        import javax.swing.text.html.*;  
        
        JEditorPane editorPane = new JEditorPane();  
        HTMLEditorKit htmlKit = new HTMLEditorKit();  
        editorPane.setEditorKit(htmlKit);  
        editorPane.setText(<html>...</html>);  
      
      

      Gruß,
      Arthur D.

      --
      >> So long, and thanks for all the fish. <<
  2. Nochmal Morgäähn *g

    Nochma kurz:

    • neue Nachrichten werden oben eigefügt
    • bei zuviel Text -> Scrollbars
    • Text wird nach unten (also zur 1. Nachricht) gescrollt

    Nun die entscheidente Frage:

    Wie kann ich die Anzeige überzeugen, noch oben zu scrollen?

    ich nehme an, du suchst setScrollPosition(java.awt.Point)

    Gruß,
    Arthur D.

    --
    >> So long, and thanks for all the fish. <<