Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 停止多次打印变量_Java_User Interface - Fatal编程技术网

Java 停止多次打印变量

Java 停止多次打印变量,java,user-interface,Java,User Interface,我有一个GUI,它可以打印出某个东西的总成本,但GUI顶部的总成本会继续重新打印结果,而不是仅仅更改数字(或双倍值) 下面是代码(我说的部分是“output.insert”): 在我看来,这行代码正在向组件添加新文本 相反,我想您应该使用以下内容: output.setText("total to pay: " + priceToPay+ "\n", 0); 当您使用output.insert(something,0)时,就像在开头追加一样。这意味着它将在偏移量0处添加文本,并将所有现有文本推

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

下面是代码(我说的部分是“output.insert”):

在我看来,这行代码正在向组件添加新文本

相反,我想您应该使用以下内容:

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);
}