[英]Jtable get selected row always returns -1
從昨天開始我就有問題了。 我在 Eclipse 中使用 WindowBuilder 創建了一個 jTable,目前正在嘗試使用 .getSelectedRow() 函數獲取所選行的編號,但它始終返回 -1(未選擇行),即使我有選擇了一些東西。
這是我當前用於測試輸出的代碼:
public void checkActiveItem() {
System.out.println(tableBills.getSelectedRow());
}
我嘗試讓它通過計時器以這種方式運行,至少這似乎有效:
Timer time = new Timer();
time.schedule(new TimerTask() {
public void run() {
Frontend f = new Frontend();
f.checkActiveBill();
f.checkActiveItem();
}
}, 250, 250 );
該表目前只有一個條目,但即使是第一行也不會在選擇時返回。 我可以通過單擊添加來創建新行(並通過在之前添加按鈕旁邊的文本字段中輸入名稱來命名它們)
要創建一個新行,我使用此代碼,也許有問題?
public void addBill() {
//maybe need this value somewhere else to, so let -1 and +1 as it is
int numbersOfBills = tableBills.getRowCount() - 1;
Bill newBill = new Bill(txtBillName.getText(), numbersOfBills + 1);
DefaultTableModel billModel2 = (DefaultTableModel) tableBills.getModel();
int billNb = numbersOfBills + 1;
billModel2.addRow(new Object[] {newBill.getBillNr(),newBill.getBillName(), newBill.getItemsInBill()});
}
為什么你所得到的理由-1
從getSelectedRow()
即使你似乎已經“添加了一行,”是的,因為Frontend
對象,你在呼喚checkActiveItem()
上是完全不同的Frontend
比你所看到的一個對象。
問題就在這里,在你的Timer
的run()
:
Frontend f = new Frontend();
您為每個計時器迭代創建一個新的Frontend
對象。 並且您正是在這個對象上調用checkActiveItem()
,而不是在您看到並按下按鈕的前端上。 因此,不正確的輸出。
作為一種解決方案,不要創建新的Frontend
,而是在您使其可見的原始前端對象上調用checkActiveItem()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.