【问题标题】:Java Format Output to Console / JTextArea with Multiple string values具有多个字符串值的 Java 格式输出到控制台/JTextArea
【发布时间】:2013-07-23 11:29:32
【问题描述】:

有一个我想从数组中输出值的程序。使用制表符 (\t) 或格式化 (%40s) 不考虑不同长度的字符串。

下面的当前代码适用于标题。

    System.out.format("%s%40s%32s%32s%32s%32s\n","ID","NAME","SURNAME","POSITION","CONTACT","EMAIL");

但是,对于不同 Lenths 的值来说,不是

我想要下面这样的东西***

Name         Surname         ID           Position
Joanne       Bassy           0000001      Manager
Mannnny      papsasjkasjnnxz 0000002      Boss

我明白了***

Name         Surname         ID           Position
Joanne       Bassy           0000001      Manager
Mannnny    papsasjkasjnnxz 0000002         Boss

【问题讨论】:

  • 只能通过使用等宽字体和使用 \t 来实现,
  • 使用 JTable 而不是通过删除列和行中的行来打扰(JTable API)
  • 感谢您的回复 mKorbel

标签: java string swing format tabular


【解决方案1】:

按如下方式更改格式字符串:

  1. 向第一个格式说明符添加宽度说明符以指定第一列的宽度
  2. 在所有格式说明符上添加 - 标志以左对齐值

更新后的格式字符串为"%-40s%-40s%-32s%-32s%-32s%-32s\n"

有关详细信息,请参阅Format String Syntax

请注意,此解决方案有几个限制:

  • 仅当您使用固定宽度的字体时才有效
  • 如果任何字符串比提供的宽度长,它会将其余的行推出,并且列不会对齐。
  • 用户将无法轻松操作数据(列宽、列顺序、排序顺序)
  • 用户将无法轻松复制输出并直接粘贴到电子表格中。

替代品包括

  • 使用JTable,这样会更灵活,但这需要更多的编码。
  • 使用\t 分隔字段而不是用空格填充。此选项允许复制到电子表格中,但仍有其他限制,如果列值的长度不完全相同,则可能更难以对齐列值。

【讨论】:

  • 采用固定宽度字体。
  • 是的,我假设了一个固定宽度的字体,因为这就是示例的给出方式。正如@mKorbel 指出的那样,最好使用JTable,但如果限制只使用文本输出,则此解决方案将与固定宽度字体结合使用。
  • +1 用于直接解决问题,但扩展限制和替代方案并没有什么坏处。
  • 不过没有任何限制,最好使用文本输出选项。感谢 Rangi Keen/trashgod 提供您的输入
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多