,可以通过以下步骤实现:
<TextArea fx:id="consoleTextArea" />
import javafx.fxml.FXML;
import javafx.scene.control.TextArea;
public class Controller {
@FXML
private TextArea consoleTextArea;
public void initialize() {
// 重定向控制台输出到TextArea
Console console = new Console(consoleTextArea);
console.redirectSystemOut();
console.redirectSystemErr();
}
}
class Console {
private TextArea textArea;
public Console(TextArea textArea) {
this.textArea = textArea;
}
public void redirectSystemOut() {
OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
appendText(String.valueOf((char) b));
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
appendText(new String(b, off, len));
}
};
System.setOut(new PrintStream(out, true));
}
public void redirectSystemErr() {
OutputStream err = new OutputStream() {
@Override
public void write(int b) throws IOException {
appendText(String.valueOf((char) b));
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
appendText(new String(b, off, len));
}
};
System.setErr(new PrintStream(err, true));
}
private void appendText(String text) {
Platform.runLater(() -> textArea.appendText(text));
}
}
<AnchorPane fx:controller="com.example.Controller">
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("JavaFX FXML Application");
primaryStage.setScene(new Scene(root, 800, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
通过以上步骤,控制台输出将会显示在JavaFX应用程序中的TextArea组件中。这样可以方便地将控制台输出与应用程序界面进行整合,提供更好的用户体验。
推荐的腾讯云相关产品:无
希望以上内容能够满足您的需求。如有任何疑问,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云