In einem Spiel, welches zur Zeit auf der Konsole läuft, möchte ich alle System.out.println in die GUI umleiten. Ich habe dafür eine TextArea erstellt und eine Methode "void print text (String text)" sowie einen PrintStream erstellt.
Hier der Quelltext für die GUI:
Bisher hab ich im Internet nur Beispiele für "JTextArea" gefunden. Dafür müsste ich aber die gesamte GUI umschreiben + hab ich noch nie mit "JFrame" gearbeitet.
Meine Frage: Ist der Ansatz für eine Ausgabe in die GUI soweit richtig?
Was muss ich jetzt noch machen, damit in allen anderen Klasse die syous in die TextArea angezeigt werden?
Hier der Quelltext für die GUI:
Java:
import java.io.PrintStream;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Gui extends Application {
@Override
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 800, 800);
// Buttons:
Button n = new Button("Norden");
n.setLayoutX(600);
n.setLayoutY(450); // Position des Buttons
root.getChildren().add(n);
Button o = new Button("Osten");
o.setLayoutX(660);
o.setLayoutY(500);
root.getChildren().add(o);
Button s = new Button("Süden");
s.setLayoutX(600);
s.setLayoutY(550);
root.getChildren().add(s);
Button w = new Button("Westen");
w.setLayoutX(540);
w.setLayoutY(500);
root.getChildren().add(w);
Label labelText = new Label("Code hier eingeben"); // ein Label wurde
// erzeugt für den
// TextField
labelText.setLayoutX(10);
labelText.setLayoutY(475);
root.getChildren().add(labelText); // setze die Position der label ein
final TextArea textOut = new TextArea();
textOut.setPrefSize(300, 100);
textOut.setLayoutX(50);
textOut.setLayoutY(500);
root.getChildren().add(textOut);
Image img1 = new Image(Game.class.getResource("Schulflur 1.jpg")
.toExternalForm()); // erzeugt ein neues Bild in gleiches
// verzeichnis wie die Klasse Game
Image img2 = new Image(Game.class.getResource("Spielplan.png")
.toExternalForm());
ImageView imgV1 = new ImageView(img1); // Node für das dimensionierung
// des Bildes würde erzeugt
ImageView imgV2 = new ImageView(img2);
imgV1.setLayoutX(0);
imgV1.setLayoutY(0);
imgV1.setFitWidth(400);
imgV1.setFitHeight(400); // setze ein die Position des Bildes und seine
// Höhe und Breite
imgV2.setLayoutX(425);
imgV2.setLayoutY(0);
imgV2.setFitWidth(375);
imgV2.setFitHeight(400);
root.getChildren().add(imgV1); // Bild auf des Parent Group hinzufügen
// um das Bild zu zeigen
root.getChildren().add(imgV2);
PrintStream stream = new PrintStream(System.out) {
@Override
public void print(String text) {
textOut.setText(text + "\n");
}
};
System.setOut(stream);
stage.setTitle("World of Zuul"); // Fenstertitel
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
Game game = new Game();
game.play();
}
Bisher hab ich im Internet nur Beispiele für "JTextArea" gefunden. Dafür müsste ich aber die gesamte GUI umschreiben + hab ich noch nie mit "JFrame" gearbeitet.
Meine Frage: Ist der Ansatz für eine Ausgabe in die GUI soweit richtig?
Was muss ich jetzt noch machen, damit in allen anderen Klasse die syous in die TextArea angezeigt werden?
Zuletzt bearbeitet von einem Moderator: