刷新JLabel中的数据



我有一个程序,它计算一个整数,然后使用JLabel中的值。在初始创建时,初始化后的值一切正常,但当我更改标签中int的值时,我似乎找不到更新JLabel的方法。相关代码如下:

JLabel carbLbl;
int totCarbs = 0;
public Main() {
carbLbl = new JLabel("Total Carbs: " + totCarbs);
carbLbl.setFont(new Font("KidSans", Font.PLAIN, 38));
carbLbl.setAlignmentX(Component.RIGHT_ALIGNMENT);
void addFoodToTable() {
String[] s = new String[3];
s = (String[]) foodData.get(foodChoice.getSelectedIndex());
foodList.addRow(s);
totCarbs += Integer.parseInt(s[2]);
carbLbl.repaint();
}
}

显然还有更多的代码,但太长了,无法包含整个脚本。有没有一种方法可以让我在调用addFoodToTable()方法时更新标签?

JLabel没有"绑定"到您的整数变量。当您更改整数时,您需要使用carbLbl.setText(String.valueOf(totCarbs))更新JLabel

难道没有一种方法可以简单地使用初始构造函数参数更新JLabel吗?

carbLbl = new JLabel("Total Carbs: " + totCarbs);

什么参数?只有一个参数,即要显示的字符串。

编译器将硬编码的字符串与"totCarbs"变量的值连接起来,以创建单个字符串。

编译器基本上会像对待一样对待上面的代码

String text = "Total Carbs" + totCarbs;
carbLbl = new JLabel( text );

JLabel不知道String是如何创建的(即使用一个变量来构建字符串(。

我理解串联的概念,但我只是觉得这是一种变通方法

这不是一个变通办法。setText(…(方法的API声明您提供了一个String。因此,如果你想更新标签,你需要提供整个字符串。

最新更新