【问题标题】:Java, How come this text doesn't align in straight columns?Java,为什么这个文本没有在直列中对齐?
【发布时间】:2020-01-28 21:08:53
【问题描述】:

所以我希望能够在直列中打印出列表中的对象。问题是它不会在直列中对齐。我希望每个参数都使用 padleft。

这是我的结果。

我已尝试使用String.format();,如下所示。它既不向左也不向右。

            String text = "";
            String text1 = "";



            for (Pet pet: h1.getPets()) {
                text = String.format("%-10s%10s%14s\n", pet.getName(), pet.getWeight() + "g", pet.getType());
                text1 += text;
            }

            String text2 = String.format("%s     %s     %s\n", "Namn:", "Vikt(gram):", "Djur:\n------------------------------------------");
            JOptionPane.showMessageDialog(null, text2 + text1, "HOTELLETS GÄSTER", JOptionPane.INFORMATION_MESSAGE);
        }

【问题讨论】:

  • 您必须为对话框使用等距字体,请参阅Is there a way to change JOptionPane.showMessageDialog font?(或者可能使用 html 作为文本:How to Use HTML in Swing Components) - 更详细:使用 JTable 作为消息JOptionPane
  • 使用 JTable。您的方法仅适用于带有固定宽度字体文本的控制台。它不适合 GUI - 使用真正的表格结构。 JOptionPane 可能不是您想要显示的方式,您可能需要在 JFrame 中显示此内容,其中包含 JScrollPane 和滚动窗格内的 JTable。

标签: java foreach linked-list alignment


【解决方案1】:

如果我没看错,你的格式字符串中有空格:

"%s     %s     %s\n"

他们不会正确对齐“表格”。尝试使用“tab”-符号“\t”:

"%s\t%s\t%s\n"

【讨论】:

  • 那部分只是标题,“姓名:”,“体重:”和“动物:”。 text1 存在于未在直列中对齐的 foreach 循环中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多