2015-12-05 62 views
0

我有其在所述GUI的頂部打印出來的東西,但總的總成本不斷重新打印結果,而不是僅僅改變的數量(或雙精度值)的GUI打印出一個可變。停止從多次

這裏是代碼(部分IM講的是「output.insert」):

+0

「輸出」在哪裏定義?它的類型是什麼?你爲什麼不用'addByNbr'做任何事情,以及addByNbrUnits定義在哪裏?誰在呼叫「號碼購買」以及在什麼情況下? – RealSkeptic

+0

@RealSkeptic在那裏,我已經添加定義它的其他類文件等 – codingmachine

回答

0
output.insert("total to pay: " + priceToPay+ "\n", 0); 

在我看來就像該行代碼被添加新的文本到組件。當您使用output.insert(something,0)這就像在開始追加

output.setText("total to pay: " + priceToPay+ "\n", 0); 
+0

是不工作,因爲它只接受一個字符串,並不會允許我設置,我想它的頂線(0末)。這也消除了我的其他輸出 – codingmachine

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到該偏移量的文本。


無關的注意:請檢查您的靜態字段。如果所有字段都是靜態的,那麼創建一個類的實例並不是一個好主意。我相信大多數這些領域應該是實例領域而不是靜態領域。