我有一个GUI,它打印出一些东西的总成本,但GUI顶部的总数不断重新打印结果,而不仅仅是更改数字(或双倍值)。
这里是代码(我正在讨论的部分是“output.insert”):
答案 0 :(得分:0)
output.insert("total to pay: " + priceToPay+ "\n", 0);
在我看来,这行代码正在向组件添加新文本。
相反,我猜你应该使用类似的东西:
output.setText("total to pay: " + priceToPay+ "\n", 0);
答案 1 :(得分:0)
使用output.insert(something,0)
时,就像在开头添加一样。这意味着它将文本添加到偏移0处,将所有现有文本推到其后。
如果要替换该行而不是在其前面插入新行,则应使用replaceRange
而不是insert
。至少从第二次开始。
假设您添加了一个字段,用于检查是否是第一次:
private static boolean firstTimeShowingTotal = true;
然后,您可以将事件处理程序中的output.insert
行更改为:
String totalToShow = "total to pay: " + priceToPay+ "\n";
if ( firstTimeShowingTotal ) {
output.insert(totalToShow, 0);
firstTimeShowingTotal = false;
} else {
int endOfFirstLine = output.getLineEndOffset(0);
output.replaceRange(totalToShow, 0, endOfFirstLine);
}
getLineEndOffset
将找到文本中第一行末尾的偏移量。 replaceRange
调用将使用新邮件将文本从0替换为该偏移量。
无关注:请检查静态字段。如果所有字段都是静态的,那么创建类的实例并不是一个好主意。我相信大多数这些字段应该是实例字段而不是静态字段。