Java, Eclipse. Konsolentext in GUI ausgeben?
Ich bin mehr als ein Anfänger. Es ist so, als würde man einem Kindergartenkind das Wurzelrechnen erklären, aber das müsst ihr garnicht, also keine Sorge. Eigendlich möchte ich garkein Programmieren mehr lernen. Ich möchte nur das dieses alte Programm aus ferner Vergangenheit vollständig ist.
Auf jeden Fall, folgendes Szenario:
Ich habe vor mehreren Jahren ein Programm geschrieben in Eclipse. Dieses Programm generiert zufällig Eigenschaften von Menschen z.B. gibt es Größe: klein und Größe: groß und es wird zufällig dazwischen entschieden und eins der Auswahlmöglichkeiten wir dann per System.out.println in der Konsole ausgegeben. Das Ganze läuft mit mehreren Eigenschaften durch, die alle nacheinander in der Konsole ausgegeben werden.
Nun, ich möchte alles, was in der Konsole erscheint in einem GUI ausgeben. JFrame, Textfield... Ich habe ehlich gesagt überhaupt keine Ahnung, was hier Sinn ergibt. Ich möchte nachher eine ausführbare Javadatei haben.
Was ich dafür brauche ist ein GUI, das ich noch nicht erstellt habe, was ich wahrscheinlich alleine auch garnicht vernünftig hinbekomme, und der Code, um in eben jene GUI den Konsolentext auszugeben.
Mein gesamter geschriebener Code ist nur in einer Klasse. Ansonsten habe ich nichts. Das sollte es zumindest etwas einfacher gestalten.
Am liebsten hätte ich einfach einen Code, den ich irgenwo in der selben Klasse einfügen kann und es funktioniert, aber wahrscheinlich ist das Ganze nicht so einfach.
Gibt es jemanden, der wüsste, wie ich meinen Fall so simpel wie möglich umsetzen kann und mir vielleicht sogar den nötigen Code dazu schreiben kann?
Extra: Wäre auch toll, wenn das Programm erst startet, wenn ich auf einen Button klicke und der Text sich an die Größe des Fensters anpasst, aber das ist mir eigendlich nicht wichtig. Hauptsache das Programm startet und der Text wird im Fenster ausgegeben.
Ich bedanke mich ganz herzlich im Voraus!
2 Antworten
Suche im Eclipse-Marketplace nach WindowBuilder, dieses Tool wird dir verdammt weit helfen bei JFrames ! So , hast du dies gemacht und Eclipse neu gestartet, dann gehe unter New File -> und da sollte ganz unten irgendwie Extra oder so sein -> WindowBuilder -> Swing -> dort musst du JFrame auswählen und auf Next oder Finish klicken. Danach, wenn alles fertig ist , klickst du unten auf Builder/ Window oder wie das heißt. Dann kannst du per drag and drop alles hineinziehen. (Setzte im Quellcode noch das Layout auf "null" !) .
In ein TextView kannst du so einen Text setzen :
Einfach nicht System.out.println(*Text*);
sondern:
TextView NameDerTextView;
NameDerTextView.setText(*text*);
Ich entschuldige mich, da ich mich an vieles nicht mehr erinnern kann, da ich auf die Android-Entwicklung umgestiegen bin und da so einiges anders ist !
Alex
Tut mir leid. Wahrscheinlich bin ich zu doof, um das alles zu verstehen. Eigendlich bin ich Hobbyartist und wollte dieses Programm nur für den Zweck programmieren, um mir bei einem Ideentief Charaktereigenschaften generieren zu können.
Wenn ich alles in einer Klasse machen würde, dann müsste ich noch einiges mehr an Grundwissen mitbringen, das ich nicht habe. Z.B. wie eine Codeabschnitt erst durchgegangen wird, wenn ich eine bestimmte Aktion ausführe. Z.B. wenn ein Button geklickt wird. Klar, irgendwie mit if, aber ich bin echt überhaupt kein Programmierer und mein Code ist mitlerweile so ein Gewusel, dass ich fast den Überblick verloren habe und mich frage, wieso er überhaupt noch funktioniert :D
Also, zur Übersicht, was ich habe:
- class - Hauptprogramm
- class - Window mit Button
- class - Window leer
Was im moment funktioniert:
Wenn das Programm ausgeführt wird erscheint das Fenster mit Button. Wenn ich auf den Button klicke öffnet sich das zweite leere Fenster. Man könnte sagen das GUI steht halbwegs.
Auch das Hauptprogramm funktioniert. Ich weiß aber nicht, wie ich den generierten Text in der GUI ausgebe. Du hattest was von TextView und set text gesagt.
Was ich erreichen möchte, aber nicht hinbekomme:
Dass das Hauptprogramm startet, NACHDEM ich den Button geklickt habe und das zweite Fenster aufgebaut ist. Und, dass die Ausgabe, die noch immer über SystemPrintIn in der Konsole erfolgt, stattdessen in diesem zweiten Fenster ausgegeben wird.
Es ist bestimmt schwer jemandem, der garnicht programmiert, etwas zum Programmieren zu erklären... Danke dafür :)
Hi. Danke für die Hilfe. Den WindowBuilder hatte ich tatsächlich vergessen. Trotzdem muss ich nocheinmal ein paar doofe Fragen stellen, weil ich wirklich eigendlich keine Ahnung von Programmieren habe. Ich habe jetzt folgende drei Sachen. 1. Den eigendlichen Programmcode mit der Ausgabe in der Konsole 2. ein Fenster mit einem Button, bei dem, wenn ich darauf klicke ein weites Fenster geöffnet wird 3. dieses zweite Fenster ist im Moment komplett blank
Wie kriege ich es jetzt genau hin, das die Ausgabe des Programs im zweiten Fenster erscheint, sobald ich den Button klicke?
Ich weiß ehrlich gesagt nicht, wie ich einzelne Klassen aufeinander beziehe.
Der Kern der Frage ist erstaunlich einfach zu beantworten.
https://docs.oracle.com/javase/9/docs/api/java/io/PipedInputStream.html
und
https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#setOut-java.io.PrintStream-
Aber ich sehe es geht eigentlich darum, wie man Sachen überhaupt in einem GUI anzeigen kann. Ups.
Hatte angenommen das wüstest du bereits, denn es ist mehr oder weniger Grundlage.
Hi. Genau, ich habe wirklich keine Ahnung, was das angeht. Ich wüsste nichteinmal, welche Methode ich verwenden muss, um Text in einem Frame auszugeben. Kannst du mir, was das angeht vielleicht helfen? Ich bin im Moment soweit, dass ich das Programm an sich habe mit der Konsolenausgabe und ich habe ein erstes Fenster mit einem Button. Wenn ich dort drauf klicke öffnet sich ein zweites Fenster. In diesem Fenster möchte ich dann den generierten Text ausgeben. Durch welche Methode müsste ich dann SystemOutPrintIn ersetzen und welches Objekt brauche ich im Fenster auf dem Frame, das mir den Text dann ausgeben kann?
du musst es nicht in mehreren Klassen machen, du kannst in einer Klasse mehrere JFrames machen !