Konsole im eigenen Java-Programm

Status
Nicht offen für weitere Antworten.

Nova

Bekanntes Mitglied
Hallo,

Zuersteinmal sorry falls das schonmal irgendwo besprochenwurde, aber bei den Stichwörtern "Konsole" oder "Konsolenausgabe" erhalte ich "millionen" Treffer die überhauptnix mit meinem Problem zu tun haben.


Das Problem:
Ich möchte in meinem Java-Programm eine Art Konsole haben, dort werden einige Meldungen des Programms ausgegeben aber (einstellbar durch den User) auch System.out und/oder System.err auf diese "interne" Konsole umgeleitet.
Das umleiten mache ich so:
Code:
System.setErr(new ErrorPrintStream(statusLogLabel));
...
	private class ErrorPrintStream extends PrintStream{
	    public ErrorPrintStream(JLabel errorLog){
	        super(new ErrorOutputStream(errorLog));
	    }
	}
	   
	private class ErrorOutputStream extends OutputStream {
	    private JLabel errorLog;
	      
	    public ErrorOutputStream(JLabel errorLog) {
	        this.errorLog=errorLog;
	    }
	      
	    public void write(int b){
	        char c=(char)b;
	        if (String.valueOf(c).equals("\n")){
	        	errorLog.setText(errorLog.getText() + "
");
	        } else {
	            errorLog.setText(errorLog.getText() + String.valueOf(c));
	        }
	    }
	}


Meine Konsole ist ein JLabel welches sich in einem JScrollPane befindet.
Das Problem ist das die Ausgabe sehr langsam ist, wenn eine Exception auftritt und auf der Konsole ausgegeben wird kann man fast zuschauen wie jeder einzelne Buchstabe erscheint (ca.10 Buchstaben pro Sekunde).
Das Problem liegt wohl darin das
a) ich immer mit setText() den kompletten Text des JLabels ersetze und
b) bei Exceptions jedes Zeichen einzeln geschrieben wird statt alles "in einem Rutsch" zu schreiben
Ich habs jetzt noch nicht ausprobiert, aber je länger der Text in der Konsole wirde desto schlimmer müsste es ja werden...

Da gibts doch sicher eine bessere (schnellere) Lösung, oder?


mfg
Christian
 
B

Beni

Gast
Ja: nimm kein JLabel.

Nimm eines der Textfelder, JTextArea oder so. Die sind eher auf grosse Textmengen ausgelegt (Mit Methoden wie "append"...).

Noch besser: mit einem DefaultStyledDocument, kombiniert mit einer JEditorPane, könntest du die Ausgaben (und Eingaben) farbig gestalten :wink:
 

meez

Top Contributor
Willst du in der Konsole auch Befehle absetzten können? Wenn ja, dann empfahle ich Jython...
 

Nova

Bekanntes Mitglied
Hallo,

In JLabel hab ich ja HTML, desshalb hab ich das auch genommen (ein paar Sachen werden farbig und/oder fett ausgegeben um sie hervorzuheben)
Es sollte schon die Möglichkeit geben Text farbig zu gestalten und fettdurck/kursiv/unterstrichen. Mehr brauch ich aber nicht.
JTextArea und so kann das nicht glaube ich?!? Muss ich morgen mal nachschauen...

Zur Not würde es ja schon reichen die Exception-Meldungen als ganzes zu schreiben, die 1-2 Sekunden Verzögerung (wenn überhaupt) bis zum erscheinen des Textes merkt man nicht und dadurch das der Text als Block erscheint merkt man nicht dass die Konsole so langsam arbeitet.
Es werden sonst keine riesigen Texte ausgegeben, nur sowas wie "beginne programmteil a", "ende programmteil b", "Verifizierung erfolgreich" etc.
Schöner wärs allerdings wenn die Konsole wirklich schneller arbeiten würde...


Nein, keine Befehle. Die Konsole dient nur zur Ausgabe!


mfg
Christian
 

Sky

Top Contributor
Hi, ich habe mal bei mir gekramt und folgendes ausgegraben, vielleicht hilft es ja:
Code:
class DebugFrame extends OutputStream {

  // <Alle Debug-Ausgaben sollen ins gleiche Fenster>
  private static JTextPane content;
  private static JFrame frame;
  // </Alle Debug-Ausgaben sollen ins gleiche Fenster>

  // <statische Anteile initialisieren>
  static {
    content = new JTextPane();
    frame = new JFrame();

    content.setEditable( false );
    content.setPreferredSize( new Dimension( 300, 300 ) );
    frame.getContentPane().add( content );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.pack();
    frame.setVisible( true );
  }
  // </statische Anteile initialisieren>

  // Für die farbige Ausgabe...
  private SimpleAttributeSet attributes = new SimpleAttributeSet();

  // <Konstruktor>
  public DebugFrame( Color textColor, boolean bold ) {
    StyleConstants.setForeground( attributes, textColor );
    StyleConstants.setFontSize( attributes, 12 );
    StyleConstants.setBold( attributes, bold );
  }
  // </Konstruktor>

  // <write-Methode>
  public void write( int b ) throws IOException {
    try {
      StyledDocument doc = content.getStyledDocument();
      doc.insertString( doc.getLength(), String.valueOf( ( char )b ), attributes );
    } catch( BadLocationException ex ) {
      ex.printStackTrace();
    }
  }
  // </write-Methode>

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R0m1lly BinärBaum auf Konsole ausgeben Allgemeine Java-Themen 9
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
M Cmd Konsole als Java Konsole Allgemeine Java-Themen 5
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
A Befehle in Konsole. Allgemeine Java-Themen 12
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
Neumi5694 Swing GUI vs Konsole Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
B Farbiger Text in der Konsole Allgemeine Java-Themen 1
RalleYTN JAnsi Warum bleiben die Hintergrundfarben beim Reseten der Konsole? Allgemeine Java-Themen 0
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
W Java Konsole "aufteilen" Allgemeine Java-Themen 4
G Warnung in der Konsole von Eclipse "WARNING: ..." Allgemeine Java-Themen 2
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
L Konsole gibt Smileys aus Allgemeine Java-Themen 3
T Mit Java auf die Konsole eines Process-Objekts zugreifen Allgemeine Java-Themen 10
Kaniee Konsole "mitlesen" Allgemeine Java-Themen 6
P .Jar Datein Windows Konsole zugewiesen Allgemeine Java-Themen 3
L Input/Output ProcessBuilder und Windows - Konsole verbergen? Allgemeine Java-Themen 5
T Methoden In Konsole tasten abfangen? Allgemeine Java-Themen 4
S exec( "cmd /c") aber Konsole soll offen bleiben Allgemeine Java-Themen 9
J Java-Klasse über Konsole starten Allgemeine Java-Themen 6
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
R java in der konsole nicht gefunden trotz jre,jdk,home und path Allgemeine Java-Themen 4
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
D Windows-Konsole auslesen - Zeichenkodierung Allgemeine Java-Themen 4
N GUI und zusätzlich Konsole Allgemeine Java-Themen 4
M Problem bei einer Baumausgabe auf der Konsole Allgemeine Java-Themen 3
X Konsole aktualisieren Allgemeine Java-Themen 17
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
Z Java Programm - xxxxx auf der Konsole ausgeben Allgemeine Java-Themen 4
F Unterstrichenes U in Eclipse-Konsole ausgeben Allgemeine Java-Themen 10
M Enter Taste in Konsole abfragen Allgemeine Java-Themen 2
B Ausgabe auf der Konsole bei Nebenläufigkeit, Threads und Synchronisation Allgemeine Java-Themen 8
Z Swing vs Konsole Allgemeine Java-Themen 17
E Gibt es Befehle für Kursor auf Konsole ? Allgemeine Java-Themen 3
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
S Error aus der Konsole auslesen Allgemeine Java-Themen 2
T Feststellen ob System-Konsole verfügbar Allgemeine Java-Themen 2
S Rückmeldung von Konsole(Batch) an Java Allgemeine Java-Themen 2
G jar datei MIT Konsole Allgemeine Java-Themen 5
zilti Java-Konsole auslesen? Allgemeine Java-Themen 10
S Aufruf in Konsole mit beliebig vielen Argumenten? Allgemeine Java-Themen 18
M Java Klassen funktioner auf Konsole nicht in Eclipse Allgemeine Java-Themen 4
V JavaProgramm von Konsole starten geht nichtmehr Allgemeine Java-Themen 4
J Threads + Dualcore = Probleme mit dem Output auf der Konsole Allgemeine Java-Themen 12
Saxony DOS Konsole und deren Streams Allgemeine Java-Themen 5
M Pfeiltasten in Konsole Allgemeine Java-Themen 2
F Konsole Allgemeine Java-Themen 2
T Konsole "Fehlermeldung": error hereerror here Allgemeine Java-Themen 4
B Unterschied: jar <-> konsole Allgemeine Java-Themen 9
R Javaprogramm von der Konsole starten Allgemeine Java-Themen 4
M einzelne Tastendrücke von der Konsole einlesen Allgemeine Java-Themen 3
V Befehle von der Konsole einlesen und Escape-Sequenzen. Allgemeine Java-Themen 2
A Ausdrucken von Konsole Allgemeine Java-Themen 4
rambozola anzahl zeichen in konsole eclipse begrenzt? Allgemeine Java-Themen 5
S java Programme über Konsole starten Allgemeine Java-Themen 5
L char-Zeichen per Konsole einlesen Allgemeine Java-Themen 4
M Unter MacOS einen Befehl auf Konsole ausführen? Allgemeine Java-Themen 6
D Verzögertes schliessen der Konsole Allgemeine Java-Themen 17
J Probleme mit der CommApi beim ProgrammStart über Konsole Allgemeine Java-Themen 2
V Konsole leeren Allgemeine Java-Themen 13
B Konsole: Bildschirm löschen Allgemeine Java-Themen 9
S Programm über Konsole startet nicht Allgemeine Java-Themen 2
A ChatProgramm für Konsole Allgemeine Java-Themen 3
L Dos Konsole mit Java auslesen ? Allgemeine Java-Themen 2
C Die Konsole ins eigene Programm einbauen Allgemeine Java-Themen 5
S Bildschirm in Konsole löschen? Allgemeine Java-Themen 6
T Addons im eigenen Programm Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
dereki2000 Eigenen Zeichensatz benutzen Allgemeine Java-Themen 7
B JAVA Prozesse in einer eigenen Anwendung laufen lassen Allgemeine Java-Themen 9
J Java eigenen Button programmieren (ob Cursor im Rechteck ist oder nicht..../button pressed or not) Allgemeine Java-Themen 6
K Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten Allgemeine Java-Themen 3
C Bufferoverflow beim eigenen simpeln Programm Allgemeine Java-Themen 4
F Grundrechenarten mit eigenen Typen Allgemeine Java-Themen 9
D Eigenen Objekt Pool Allgemeine Java-Themen 15
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
D eigenen eventListener Allgemeine Java-Themen 5
X Duplikate aus eigenen Datentypen entfernen Allgemeine Java-Themen 14
H2SO3- jar soll eigenen namen(pfad) finden Allgemeine Java-Themen 12
R Eigenen Comparator schreiben ? Allgemeine Java-Themen 10
G Kennt jemand gute Produkte zum Lizensieren der eigenen Apps? Allgemeine Java-Themen 6
G Fragen zum eigenen Scheduler Allgemeine Java-Themen 4
thE_29 Java Prozesse der eigenen JVM Allgemeine Java-Themen 12
Escorter Eigenen Listener schreiben Allgemeine Java-Themen 3
C Eigenen Layout Manager schreiben Allgemeine Java-Themen 7
P Klasse über eigenen Classloader laden: SecurityException Allgemeine Java-Themen 11
M eigenen Desktop erzeugen Allgemeine Java-Themen 3
G hat jeder thread seinen eigenen stacktrace? Allgemeine Java-Themen 2
F Eigenen E-MailClient als Standart definieren Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben