Netbeans Java jTable выдает сообщение об ошибке без выбора

У меня есть jTable, заполненный данными из базы данных MySQL. Если пользователь выбирает строку и нажимает кнопку jButton, отображается jDialog, где он / она может редактировать все данные, относящиеся к выбранной строке. Он работает отлично, но IDE выдает сообщение об ошибке, когда нет выбора вообще. Что я могу делать?

Сообщение об ошибке:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1

Мой код:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    int username = 0;

    int un_row = jTable1.getSelectedRow();
    String uname = jTable1.getModel().getValueAt(un_row, username).toString();

    if (morethanzero()) {
        PersonalInfoEdit piedit = new PersonalInfoEdit(null, true, uname, perm);
        piedit.setLocationRelativeTo(piedit);
        piedit.setVisible(true); 
    }
}

boolean morethanzero(){
    if (model.getRowCount() < 0 || model.getColumnCount() < 0) {
        JOptionPane.showMessageDialog(null,"There's no selected user!","Error",JOptionPane.ERROR_MESSAGE);
        jTable1.requestFocus();
        return false;
    }
    return true;
}

Заранее спасибо!

Не могли бы вы добавить дополнительную информацию об ошибке? Некоторая часть трассировки стека, а не только самая верхняя строка.

ikos23 18.03.2018 20:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
35
1

Ответы 1

Все просто, учтите, если ни одна строка не выбрана. Например,

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    int username = 0;

    int un_row = jTable1.getSelectedRow();

    if (un_row < 0) {
        return;    // if no row selected, get out!
    }       
    // .... rest of code here   

Вау, это было действительно просто. Большое спасибо!

MilanDaOne 19.03.2018 17:51

Другие вопросы по теме