2015-07-01 2 views
3

У меня есть JTable с 2 coloumns, один столбец - тип объекта, второй столбец - флажок. В этой таблице пользователь хочет выбрать только один флажок. Я пробовал много кодов (примеры: jtable checkbox single selection и Second one), наконец, я сделал это, используя функцию.сделать только один флажок, который можно выбрать в столбце JTable

Вот моя функция:

public void setSelectionEnableOrDisable(JTable table) { 
    int earlierSelectionRow = 0; 
    int selectedRow = table.getSelectedRow(); 
    for (int i = 0; i < table.getRowCount(); i++) { 
     if ((Boolean) table.getValueAt(i, 1) == true && i != selectedRow) { 
      earlierSelectionRow = i; 
     } 
    } 
    table.setValueAt(true, selectedRow, 1); 
    table.setValueAt(true, earlierSelectionRow, 1); 
} 

Но, Что проблема с этим есть, когда я нажав checbox медленно это хорошо. если я быстро нажимаю 2 или 3 флажка, тогда мой код позволяет многократно выбирать. Что здесь не так?

+0

Try ButtonGroup. – Praveen

+0

На это был дан ответ ранее с очень изящным примером - http://stackoverflow.com/questions/7920068/using-setvalueat-to-recreate-mutually-exclusive-check-boxes/7920159#7920159 –

ответ

1

Я думаю, что вы можете сделать это проще, как:

public void setSelectionEnableOrDisable(JTable table) { 

int selectedRow = table.getSelectedRow(); 
if ((Boolean)table.getValueAt(selectedRow , 1)) { 
    for (int i = 0; i < table.getRowCount(); i++) { 
    if (i != selectedRow) { 
     table.setValueAt(false, i, 1); 
    } 
    } 

} 
Смежные вопросы