JtextArea格式化问题中的控制台输出

时间:2014-05-07 16:47:18

标签: java console formatting jtextarea

代码相当简单,显示当前正在运行的进程

 Process p = Runtime.getRuntime().exec("TASKLIST");

 BufferedReader reader = new BufferedReader(new InputStreamReader(
 p.getInputStream()));
 String line;

while ((line = reader.readLine()) != null) {
System.out.println(line);
   }
控制台上的

输出我的格式正确

     Image Name             PID Session Name Session#    Mem Usage
     ========================== ===================== ============
     System Idle Process      0 Services            0         24 K
     System                   4 Services            0      1,260 K
     svchost.exe            896 Services            0      7,060 K
     taskmgr.exe            868 Console             2     13,300 K
     WINWORD.EXE           5412 Console             2     39,860 K
     iexplore.exe          5256 Console             2     69,104 K
     eclipse.exe           1112 Console             2      1,788 K
     javaw.exe             4380 Console             2    555,552 K
     cmd.exe               1500 Console             2      3,264 K
     conhost.exe           3120 Console             2      7,188 K
     bash.exe              3360 Console             2      7,840 K

显示Jtextarea上代码的输出而不是

   System.out.println(line);

我做了

   textarea.append(line+"\n");

但文本区域上的格式显示不正确,因为在控制台上,

    Image Name                     PID Session Name        Session#    Mem Usage
    ========================= ======== ================ =========== ============
    System Idle Process      0 Services                     0  4 K
    System                      4 Services                0 10,024 K
    smss.exe                  324 Services                  0  312 K
    csrss.exe                      436 Services            02,252 K

---------------------------------- UPDATE ------------ -------------------

通过更改Textarea的字体解决格式问题,现在它已正确对齐

2 个答案:

答案 0 :(得分:0)

您可能想要使用JTable,使用JTable,所有内容都是行和列,就像电子表格一样。它可能需要比您现有的代码更多的代码,但请放心,它可以正常工作(如果编程正确)

首先,你需要一个像这样的二维数组:

private String[][] data = {
        {"Example 1", "0.0.1", "Update"},
        {"Example 2", "0.0.1", "Installed"}
};

一旦你有了这个,你需要一个像这样的列数组:

private String[] columns = {"Mod name", "Version", "Installed"};

一旦你拥有了这两个,你可以使用它来制作表格:

JTable table = new JTable(data, columns);

答案 1 :(得分:0)

似乎与控制台不同,textarea使用的字体不是Monospaced Font

JTextArea的字体设置为等宽字体(或逻辑Font.MONOSPACED),或使用JTable显示数据。

也可以查看this answer