我会给你我的代码片段:
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));
}
});
以上所有内容都有效,因为 tCount
和 hCount
是变量,因此我可以将它们设置为 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()。
然后您可以简单地使用StringBuilder
的toString()
方法来返回完整的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/