【问题标题】:How to start a new main class with new console window如何使用新的控制台窗口启动新的主类
【发布时间】:2015-10-28 10:03:07
【问题描述】:

我正在用 Java 创建一个客户端-服务器聊天应用程序。我决定不使用像 java swing 这样的 GUI。我只使用java控制台窗口。现在,我想用一个新的控制台选项卡打开一个新的主类。我不知道该怎么做。

在 Main.java 中调用新的 main

public static void main(String[] args) {
    System.out.println("This is main console.");
    ServerMain.main(null);
}

ServerMain.java

public static void main(String[] args) {
    System.out.println("THIS IS SERVER MAIN.");
}

输出

This is main console.
THIS IS SERVER MAIN.

两个输出都保留在同一个控制台窗口中。 我想要的是将两个输出字符串分成两个单独的控制台选项卡窗口。

【问题讨论】:

  • 我相信这取决于平台,因为控制台应用程序(由操作系统提供)可能会有不同的行为。
  • 与窗口管理器交互的唯一真正方法是通过 GUI 工具包。

标签: java console main


【解决方案1】:

当您运行一个非 GUI 的 Java 程序时,它对周围环境一无所知。它只期望您可以使用 System.in 的输入字节流,以及“其他地方”发送的两个输出字节流,您可以使用 System.out 和 System.err。

就是这样。没有别的了。

您要做的是指示 CMD.EXE 窗口 的事情。这在上面描述的“其他地方”部分很明显,并且在 Unix 世界中非常普遍,在图形屏幕可用之前很久就使用了许多不同的基于字符的终端。典型的技巧是在发送到终端的输出流中发送所谓的转义码,然后对终端进行不同的解释,而不仅仅是显示字符。通常这可能是移动光标、清洁屏幕和切换字符集等等。

现在你的问题是 CMD.EXE 不能理解很多转义代码,因此你不能告诉它按原样做你想做的事情。

要么得到一个更好的终端模拟器来运行你的 Java 代码,要么在你的 Java 程序之外编写一些脚手架来抓取两个流并将它们发送到适当的终端选项卡。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2011-07-05
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多