Java 停止多次打印变量
我有一个GUI,它可以打印出某个东西的总成本,但GUI顶部的总成本会继续重新打印结果,而不是仅仅更改数字(或双倍值) 下面是代码(我说的部分是“output.insert”): 在我看来,这行代码正在向组件添加新文本 相反,我想您应该使用以下内容:Java 停止多次打印变量,java,user-interface,Java,User Interface,我有一个GUI,它可以打印出某个东西的总成本,但GUI顶部的总成本会继续重新打印结果,而不是仅仅更改数字(或双倍值) 下面是代码(我说的部分是“output.insert”): 在我看来,这行代码正在向组件添加新文本 相反,我想您应该使用以下内容: output.setText("total to pay: " + priceToPay+ "\n", 0); 当您使用output.insert(something,0)时,就像在开头追加一样。这意味着它将在偏移量0处添加文本,并将所有现有文本推
output.setText("total to pay: " + priceToPay+ "\n", 0);
当您使用
output.insert(something,0)
时,就像在开头追加一样。这意味着它将在偏移量0处添加文本,并将所有现有文本推到其后面
如果要替换该行而不是在其前面插入新行,则应使用replaceRange
而不是insert
。至少从第二次开始
因此,假设您添加了一个字段来检查这是否是第一次:
private static boolean firstTimeShowingTotal = true;
然后,您可以更改输出。将事件处理程序中的行插入到:
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到该偏移量的文本
无关注意:检查静态字段。如果所有字段都是静态的,那么创建类的实例不是一个好主意。我认为这些字段中的大多数应该是实例字段,而不是静态字段。在哪里定义了output
?它是什么类型的?为什么不使用addByNbr
做任何事情,以及addByNbr单元的定义在哪里?谁在调用numberPurchase
,在什么情况下?@realponsign我在那里添加了另一个类文件,它在定义它的地方等。它不起作用,因为它只接受一个字符串,不允许我将它设置在顶行(末尾的0)。它还删除了我的其他输出
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);
}