Есть таблица со столбцом boolean, нужно подсчитать кол-во выбранных строк, когда boolean = true, и это кол-во занести в переменную. Нашел индексы строк когда boolean true. Теперь хочу подсчитать кол-во индексов, и занести в переменную, как это организовать? (Установил столбцу boolean 5 true из 100, в переменную упала значение 5 ...)
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
if (table.getSelectedRow() >= 0) {
for (int i = 0; i < table.getRowCount(); i++) {
if (isRowChecked((Boolean) table.getValueAt(i, table.getColumnModel().getColumnIndex("Столбец")))==true) {
System.out.println(i);
}
}
}
}
}
});
Сделал так, но выбрал 4 checkbox (4 true) отобразило мол 4 выбрано, потом резко передумал и снял 1 выделение (стало 3 true) отображает также 4. Если еще сниму выделение, т.е 2 true в итоге, отображает выделено 2. Почему такой момент происходит с 3 выделениями ? почему пишет что выделено 4 ? И не реагирует выделение на 1 строки в таблице (0 index)
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
int counter = 0;
if (table.getSelectedRow() >= 0) {
for (int i = 0; i < table.getRowCount(); i++) {
boolean selCheckBox = isRowChecked((Boolean) table.getValueAt(i, table.getColumnModel().getColumnIndex("Столбец")));
int a = selCheckBox == true ? counter++ : counter;
LBLSelected.setText(String.valueOf(a));
}
int selectedAll = Integer.valueOf(LBLSelectedAll.getText());
int selected = Integer.valueOf(LBLSelected.getText());
LBLLees.setText(String.valueOf(selectedAll-selected));
if (LBLSelected.getText().equals(LBLSelectedAll.getText())) {
imgStatus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ok.png")));
} else {
imgStatus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/done.png")));
}
} else {
LBLSelected.setText(String.valueOf(0));
}
}
}
});
Отображает правильно, если после снятие true убрать фокус на др.строку А без смены фокуса .... ????
Можно сделать как-то так:
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
long count = 0;
if (!e.getValueIsAdjusting()) {
if (table.getSelectedRow() >= 0) {
count = IntStream.range(0, table.getRowCount())
.filter(i -> isRowChecked((Boolean) table
.getValueAt(i, table.getColumnModel().getColumnIndex("Столбец"))))
.count();
}
}
// тут можно использовать count
}
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Допустим, что у нас есть приложение с одной кнопкой - отправить запрос на добавление сообщения в чатПо нажатию на нее у нас появляется на экране...