我有一個有複選框的JTable。 該表實現了偵聽器tableChanged,如果選擇了複選框,它將觸發事件selectionChanged以true或false。JTable複選框偵聽器無法正常工作
在selectionChanged中,有一個計數器可以知道檢查了多少個複選框。但是這不能正常工作。如果我點擊複選框上的任何地方,它也會增加計數器。
這是它的樣子:
@Override
public void tableChanged(TableModelEvent P_evt)
{
.....
listener.selectionChanged(F_newValue);
@Override
public void selectionChanged(boolean P_selected)
{
if (P_selected)
{
nextButton.setEnabled(true);
selectedBundles++;
System.out.println("Selected Bundles: " + selectedBundles);
}
if(!P_selected)
{
nextButton.setEnabled(false);
selectedBundles--;
System.out.println("Selected Bundles: " + selectedBundles);
}
if (selectedBundles > 0)
{
nextButton.setEnabled(true);
}
else
{
nextButton.setEnabled(false);
}
每個JTable當然都有一個TableModel,它包含實際的數據。你爲什麼不能在那裏處理? – ControlAltDel
你是什麼意思,我有TableModel,但我不想改變表的數據.. – seriously
TableModel.setValueAt當你檢查/取消選中JTable中的布爾值時被調用。你可以重寫這個來計算你的檢查次數或保持檢查字段的當前值 – ControlAltDel