停止变量多次打印

时间:2015-12-05 16:27:02

标签: java user-interface

我有一个GUI,它打印出一些东西的总成本,但GUI顶部的总数不断重新打印结果,而不仅仅是更改数字(或双倍值)。

这里是代码(我正在讨论的部分是“output.insert”):

2 个答案:

答案 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替换为该偏移量。

无关注:请检查静态字段。如果所有字段都是静态的,那么创建类的实例并不是一个好主意。我相信大多数这些字段应该是实例字段而不是静态字段。