java - 如何为 JLabel 设置文本,以便它从 void 方法打印多个打印语句?

标签 java swing jframe

我会给你我的代码片段:

JButton button = new JButton("Flip");
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        Flips flip = new Flips();

        flipsLabel.setText(Arrays.toString(flip.hAndT));

        flip.tailsCount();
        tailsLabel.setText("Total Tails " + Integer.toString(flip.tCount));

        flip.headsCount();
        headsLabel.setText("Total Tails " + Integer.toString(flip.hCount));
    }
});

以上所有内容都有效,因为 tCounthCount 是变量,因此我可以将它们设置为 JLabels 中的文本。

但是,我也想将以下方法打印到 JLabel:

public static void headsCount() {
    System.out.println();
    System.out.println("Heads");
    System.out.println("=====");

    for (int i = 0; i < HandT.length; i++) {
        if (hAndT[i].equals("Head")) {
            System.out.println("index " + Integer.toString(i));
            hCount++;
        }
    }
}

输出是数组中头部所在索引的多行。我无法通过将其设置为按钮操作的文本来打印此 void 方法,因为它是原始类型。

我是否必须将该方法转换为返回类型并返回包含此信息的某种数组,以便我可以将其打印到 JLabel?

最佳答案

Will I have to turn the method into a return type

是的,您可能会返回一个String

您可以使用 StringBuilder 并继续将文本附加到 StringBuilder,而不是使用 System.out.println()。

然后您可以简单地使用StringBuildertoString()方法来返回完整的String

so I can print it to a JLabel?

我怀疑您会使用 JLabel,因为 JLabel 并非设计用于显示多行文本。您可以改用 JTextArea

如果您想使用 JLabel,那么您仍然可以使用 StringBuilder 构建 HTML 以在标签中显示。

关于java - 如何为 JLabel 设置文本,以便它从 void 方法打印多个打印语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40950449/

相关文章:

java - 将 JLayeredPane 添加到 JPanel

java - 使用 svnkit 即时更改 svn 文件属性

java - 有没有一种方法可以从不同的包(或类)运行一个定义的和 X 个随机 TestNG 测试?

java - 如何将3个字母的小写字母向后移动?

java - 从 java 程序访问 WSO2 治理注册表

java - 检测 JScrollPane 中的 JTable 何时滚动到底部附近

java - 在哪里声明变量 (Java)

java - 如何在 Java Swing 中绘制折线图

java - AbstractButton 类型中的方法 addActionListener(ActionListener) 不适用于参数 (Object)

Java swing,JButton 在第一次按下按钮时不会重新调整大小,但会在第二次按下时重新调整大小