Inputstream aus Konsole in JTextArea

Benji0815

Aktives Mitglied
Ich werwende den ganz unten stehenden Code um Consolenmeldungen in einer JTextarea in meiner GUI anzuzeigen. Wenn ich in meinem Code eine Benutzereingabe verwende ... ->

Java:
...
Scanner bsc = new Scanner( System.in );
System.out.println("Eingabe: ");
String gatedog = bsc.nextLine();
if(gatedog.equals("ja")){
        retVal.add(u);
}
...

<- ... möchte ich, dass ich in der Textarea nicht nur "Eingabe:" sehe, sondern auch eine Eingabe machen kann.

Bisher muss ich die Eingabe noch über die Console in Eclipse machen, ich würde die Antwort aber lieber über die JTextarea eingeben.

Kann mir jemand weiterhelfen?


Java:
 System.setOut(new PrintStream(new OutputStream() {

	        @Override
	        public void write(byte[] b, int off, int len) throws IOException {
	          ta.append(new String(b, off, len));//ta ist eine JTextArea
	          autoScroll();
	          try {
	      		f.write(new String(b, off, len));
	      	} catch (IOException e) {
	      		e.printStackTrace();
	      	}  	
	        }

	        @Override
	        public void write(byte[] b) throws IOException {
	          this.write(b, 0, b.length);
	        }

	        @Override
	        public void write(int b) throws IOException {
	          this.write(new byte[] { (byte)b });
	        }

	      }));
 

Benji0815

Aktives Mitglied
Das hilft mir schon mal weiter! DANKE!

Ich hatte mir irgendwie gedacht, dass es vielleicht auch die Möglichkeit gibt soetwas ähnliches zu machen wie ich mit dem System.setOut(...)

Das es vielleicht auch ein System.setIn(...) gibt. Wenn ja müsste ich dann dort auch die write methode überschreiben?


Gibt es vielleicht auch die Möglichkeit alles was ich in der Eclipse Console kann in eine JTextArea umzuleiten. System.out, System.in, System.err....
 

faetzminator

Gesperrter Benutzer
Du kannst einen eigenen [c]PrintStream[/c] schreiben, welcher in den jeweiligen Methoden das Textfeld updated. Schöner wärs natürlich mit einer [c]List[/c] von Textfeldern, welche sich selber registrieren können. Oder sogar einem/mehreren Listener :D ?
 

faetzminator

Gesperrter Benutzer
Ich hab sowas ähnliches Mal in einem JUnit Test gemacht, um gewisse Konsolenausgaben zu testen:
Java:
private PrintStream stdout;
private final List<String> returnLines = new ArrayList<String>();

@Override
protected void setUp() throws Exception {
    super.setUp();
    stdout = System.out;
    System.setOut(new PrintStream(System.out) {
        @Override
        public void println(String x) {
            returnLines.add(x);
        }
    });
}

@Override
protected void tearDown() throws Exception {
    super.tearDown();
    System.setOut(stdout);
}
So konnte man im Test einfach die Methoden aufrufen, welche gewissen Output machen und danach [c]returnLines[/c] überprüfen.

Edit: natürlich habe ich mir nicht die Mühe gemacht, alle Methoden zu überschreiben, da ich mir bewusst war, dass sowieso nur [c]println(String)[/c] aufgerufen wird.
 
Zuletzt bearbeitet:

Benji0815

Aktives Mitglied
Wenn noch jemand einen weiteren Tip im Bezug zu meinem Problem mit dem InputStream hat würde mich das interessieren. Ansonsten nochmal vielen Dank!
 
S

Spacerat

Gast
Also ein [c]System.setIn()[/c] wird es in absehbarer Zeit wohl kaum geben, da [c]System.in[/c] sozusagen mit der Tastatur fest verdrahtet ist. Wenn man seine Eingaben zeichenweise in einer Konsole darstellen will, kommt man nicht drum rum, sich seine eigene "Konsole" zu entwickeln, die auf KeyEvents reagiert. Mit anderen Worten ein eigenes Set von Input-, Output- und ggf. ErrorStream. Wenn man über eine solche "Konsole" native Kommandos (z.B. [c]format c:[/c]) ausführen will, müssen diese allerdings an [c]runtime.exec()[/c] übergeben werden.
 

Benji0815

Aktives Mitglied
Vielleicht denke ich auch viel zu kompliziert.

Was ich eigentlich möchte ist irgendeine Möglichkeit von der GUI aus mit ja oder nein (beliebiger String) auf den Scanner zu antworten. Jenachdem wird dann ein Wert in eine Liste eingetragen oder nicht.

Das ganze ist ein Element in einem Programm das Zeichenketten mit Dateipfaden einliest, es findet eine Vorfilterung statt und bei allen Zeichenketten die übrig bleiben soll der Benutzer in jedem Fall gefragt werden, ob das jeweilige Dokument aufgenommen werden soll oder nicht. Ich habe den Scanner verwendet um den Programmfluss zu unterbrechen und mit ja / nein reagieren zu können.

Es muss nicht einmal ja oder nein geschrieben werden. Es könnte z.B. auch zwei Button geben, die dem gatedog sobald eine Benutzereingabe erwartet wird einen Wert übergeben, der eine ja der andere z.B. nein.

Was mir grad eingefallen ist, vielleicht reicht auch eine Meldung aus, die aufpoppt sobald eine Nutzereingabe erforderlich ist und über diese kann ja oder nein eingegeben werden. Sowas müsste doch ohne weiteres möglich sein, oder?

Ich denke diese Beschreibung kommt meinem eigentlichen Problem näher. Über Ideen und Anregungen freue ich mich!

Java:
...
Scanner bsc = new Scanner( System.in );
System.out.println("Eingabe: ");
String gatedog = bsc.nextLine();
if(gatedog.equals("ja")){
        retVal.add(u);
}
...
 
S

Spacerat

Gast
Dann würde ich sofort zu [c]runtime.exec()[/c] raten. Also das Kommando (möglicherweise der Befehl "dir"?) damit ausführen, den InputStream des Prozesses holen, an einen beliebigen OutputStream weiterleiten und während dieser Weiterleitung auf Ereignisse prüfen, die einer Interaktion bedürfen. Interaktionen können dann per ChoiceRequester (modaler Dialog) getätigt werden.
 

Benji0815

Aktives Mitglied
Die Zeichenketten mit Dateipfaden liegen nicht lokal. Das Programm ist ein Spider mit dem ich meine Webseite auslesen möchte. Um mich korrekt auszudrücken sollte ich statt dateipfaden wohl lieber URLs sagen

Mit der Vorfilterung kann ich URLs mit einem bestimmten Substring auswählen, nur wenn diese enthalten ist wird die URL heruntergeladen. Alle anderen URLs werden noch mehrmals nach verschiedenen Kriterien gefiltert.

Am Ende bleiben einige URLs übrig bei dennen ich von Fall zu Fall entscheiden möchte, ob ich Sie runterladen möchte oder nicht. Hierfür brauche ich einen Entscheidungsmechanismus der den Programmfluss stoppt und mir eine Interaktionsmöglichkeit gibt "runterladen" oder "nicht runterladen"

Und diese Interaktion möchte ich über meine GUI bedienen können.

Wie gesagt mein Idee wäre eine Meldung die aufpoppt. Vielleicht mit zwei Buttons ja / nein. Das müsste doch gehen oder, dass ich so mit dem Scanner interagieren kann?

Oder eine Meldung in einem Textfeld direkt in der GUI ohne Meldungsfenster die mich darauf aufmerksam macht das jetzt eine Eingabe von mir erwartet wird und dann zwei Buttons zum Antworten mit ja/nein. Dazu müsste ich natürlich wissen wie ich das Textfeld mit der Meldung aktualisiern kann.

Freue mich auf weitere Anregungen!
 
Zuletzt bearbeitet:

Benji0815

Aktives Mitglied
Hab es ausprobiert, die Variante mit der Meldung die aufpoppt gefällt mit ganz gut. Hab es auch bereits implementiert. War ganz einfach.

Das finde ich das tolle an Foren, dass man gezwungen ist das was man sucht in Worte zu fassen. Beim formulieren und nochmal durchlesen meiner Beiträge komme ich oft selbst auf die Lösung.

Die Anregungen von anderen sind natürlich auch nicht zu vernachlässigen, die sehen das Problem meist aus einem anderen Blickwinckel und haben oft mehr Erfahrung und das hilft schon weiter.

Also nochmal vielen Dank!
 
S

Spacerat

Gast
...Ok... dann eben URLs. Das ändert aber nichts daran, dass die Abfrage per modaler Dialog (vor allem in einer GUI) viel eleganter ist, als dass man versucht, die Konsole (auch mittels Scanner) dazu zu "missbrauchen" um daran zu scheitern. Ein modaler Dialog lässt sich ja auch um einiges angenehmer instanzieren:
Java:
final JDialog modalDialog = new JDialog(guiwindow, "Interaktion erforderlich", modalityMode) {
  {
    // Buttons und ActionListener hinzufügen
  }
};
modalDialog.setVisible(true);
Ein Dialog erweitert letztendlich [c]java.awt.Window[/c] wodurch es zu einem [c]Container[/c] wird. Diesem kann man zwei Buttons (Ok und Cancel) adden, die ein boolean (Klassenvariable) beeinflussen, welches letztendlich die Entscheidung darstellt. Ich könnte mir durchaus vorstellen, das man da noch nicht mal selbst was Entwickeln muss, also das es bereits etwas Fertiges gibt. Sicher bin ich da jedoch nicht.
@Edit: Hab' ich wirlich knapp 10 Min. für diese Antwort gebraucht? OMG :)
 
Zuletzt bearbeitet von einem Moderator:

Benji0815

Aktives Mitglied
Das ist doch genau das was ich jetzt gemacht habe!

Java:
int response;

                	response = JOptionPane.showConfirmDialog(null, u + " herunterladen?");
                	System.out.println(response);
        			//String gatedog = bsc.nextLine();
        			if(response == 0){
        				retVal.add(u);
        				System.out.println("Done!");
        			}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I InputStream von Konsole abfangen Java Basics - Anfänger-Themen 6
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
berserkerdq2 inputstream und bufferedwirter /outputstream und bufferedwriter Java Basics - Anfänger-Themen 9
T Bluetooth, Inputstream Java Basics - Anfänger-Themen 0
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
B InputStream / OutputStream / PipedOutputStream und managedExecutorService Java Basics - Anfänger-Themen 3
B java.io.OutputStream zu java.io.InputStream konvertieren Java Basics - Anfänger-Themen 18
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
B Konvertieren: Outputstream zu Inputstream Java Basics - Anfänger-Themen 13
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D InputStream parsen und als Bilddatei abspeichern Java Basics - Anfänger-Themen 1
G Input/Output InputStream gibt nicht die Korrekten Werte aus Java Basics - Anfänger-Themen 10
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
P bytes aus einem InputStream zählen Java Basics - Anfänger-Themen 2
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
T Input/Output Exception bei einem InputStream Java Basics - Anfänger-Themen 2
W ProcessBuilder InputStream in Array speichern Java Basics - Anfänger-Themen 3
K InputStream erstellen Java Basics - Anfänger-Themen 4
B Input/Output Data / Buffer / File Outstream Inputstream Java Basics - Anfänger-Themen 2
L Webservice soll InputStream übergeben bekommen Java Basics - Anfänger-Themen 7
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
C InputStream Java Basics - Anfänger-Themen 2
O Input/Output Fragen zum InputStream Java Basics - Anfänger-Themen 7
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
G Frage zu InputStream? Java Basics - Anfänger-Themen 11
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
A Frage zu Beispiel eines Dekorierers von InputStream Java Basics - Anfänger-Themen 4
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
S Input/Output Neuen InputStream System.in setzen Java Basics - Anfänger-Themen 11
A InputStream gibt nur jede 2te Zeile aus Java Basics - Anfänger-Themen 7
J InputStream FTP Java Basics - Anfänger-Themen 8
brunothg Inputstream zu Filechannel Java Basics - Anfänger-Themen 6
K StringWriter/String nach InputStream konvertieren Java Basics - Anfänger-Themen 3
A Problem mit InputStream Java Basics - Anfänger-Themen 4
bastiann Kann man Inputstream nur auf ein Zeichen anwenden? Java Basics - Anfänger-Themen 5
U Inputstream.read()/readLine() blockiert immer Java Basics - Anfänger-Themen 18
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Kompletten InputStream der Kommandokonsole ausgeben Java Basics - Anfänger-Themen 8
G InputStream aufrufen, ändern und zurück geben Java Basics - Anfänger-Themen 2
W Zeichen ersetzen im InputStream Java Basics - Anfänger-Themen 3
N String vom InputStream in TextArea übertragen Java Basics - Anfänger-Themen 6
A Frage zu Puffergröße bei InputStream Java Basics - Anfänger-Themen 9
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
M Datei speichern mittels InputStream Java Basics - Anfänger-Themen 13
P InputStream in Byte-Array speichern Java Basics - Anfänger-Themen 2
G String in InputStream umwandeln? Java Basics - Anfänger-Themen 8
M Auslesen eines InputStream Java Basics - Anfänger-Themen 4
M Problem mit InputStream Java Basics - Anfänger-Themen 7
S Probleme mit InputStream- Rückgabe Java Basics - Anfänger-Themen 4
G InputStream im finally-Block schließen Java Basics - Anfänger-Themen 7
K InputStream? Java Basics - Anfänger-Themen 3
S Sockets and InputStream Java Basics - Anfänger-Themen 2
M InputStream einer Socketverbindung funktioniert nicht Java Basics - Anfänger-Themen 19
M Byte InputStream zu Zeichenformat Unicode bzw String konvert Java Basics - Anfänger-Themen 5
R InputStream erstellen, der aus String liest Java Basics - Anfänger-Themen 8
R ENTER in InputStream nicht lesen Java Basics - Anfänger-Themen 4
G InputStream auslesen und zurückschreiben Java Basics - Anfänger-Themen 9
R BufferedReader <-> InputStream Java Basics - Anfänger-Themen 3
R Suche geeignetes InputStream Java Basics - Anfänger-Themen 2
D InputStream -> Image Java Basics - Anfänger-Themen 6
M String zu InputStream/InputSource Java Basics - Anfänger-Themen 2
S Problem mit InputStream / flush() / BufferedReader Java Basics - Anfänger-Themen 19
C Aus ein Image-Objekt einen InputStream generieren? Java Basics - Anfänger-Themen 6
J InputStream in String umwandeln Java Basics - Anfänger-Themen 5
J InputStream ist null Java Basics - Anfänger-Themen 7
P InputStream, BufferedString Java Basics - Anfänger-Themen 3
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
M Nicht genug Eingabemöglichkeiten in der Konsole Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W char über die Konsole? Java Basics - Anfänger-Themen 7
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
I Java auf der Konsole Java Basics - Anfänger-Themen 5
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
C Ausgabe in der Konsole Java Basics - Anfänger-Themen 11
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
J Konsole Java Basics - Anfänger-Themen 10
V Umgebungsvariable Genutzte Javaversion in der Konsole ändern Java Basics - Anfänger-Themen 5
N Tabelle schön in der Konsole ausgeben Java Basics - Anfänger-Themen 5
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
D Tabelle in der Konsole Java Basics - Anfänger-Themen 3
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
F Java auf Windows Konsole ausführen Java Basics - Anfänger-Themen 1
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
A Programm in Konsole Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben