Jak poprawić, żeby nie było: NullPointerException

0

Chciałbym aby jakiś tam przycisk wywoływał stronę z numerem "x" w adresie, w zależności od tego, w którym wierszu zaznaczę check. Kolumna z check jest druga, a w trzeciej kolumnie są kolejno wprowadzone do bazy różne miejsca. Mapy mam ponumerowane od 0... Niestety pojawia mi się NullPointerException i nie wiem, co mam poprawić...

private void showMapActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
        for (int i = 1; i < table.getRowCount(); i++) {
            if (table.getModel().getValueAt(i, 2) != null) {
                if (table.getModel().getValueAt(i, 1).toString() == "true") {
                     int x= Integer.parseInt(table.getModel().getValueAt(i, 2).toString());
                     x=x-1;
                     String www = "adresMojejStrony" + x + ".htm";
                    try {
                        String URL = www;
                        java.awt.Desktop.getDesktop().browse(java.net.URI.create(URL));

                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                }
            }
        }         

Czy ktoś mi pomoże, bo to pewnie proste...
To po drugim zaznaczeniu checka zadziała, ale po pierwszym wywala wyjątek.

1
Piotr Zięba napisał(a):

Chciałbym aby jakiś tam przycisk wywoływał stronę z numerem "x" w adresie, w zależności od tego, w którym wierszu zaznaczę check. Kolumna z check jest druga, a w trzeciej kolumnie są kolejno wprowadzone do bazy różne miejsca. Mapy mam ponumerowane od 0... Niestety pojawia mi się NullPointerException i nie wiem, co mam poprawić...

            if (table.getModel().getValueAt(i, 1).toString() == "true") {

Czy ktoś mi pomoże, bo to pewnie proste...
To po drugim zaznaczeniu checka zadziała, ale po pierwszym wywala wyjątek.

Zdawało mi się, że już widziałem WSZYSTKO nt "porównania true", ale mnie przelicytowałeś, następne linie też są dyskusyjne, wszystkie za wyjątkiem klamerek. Nie wiem, na czym wzorujesz ten styl, ale zmień źródła wiedzy.

Co do tematu, BYĆ MOŻE w tej linii jest rzucany NPE, ale to ty masz tą wiedzę płynącą z pełnej treści wyjątku.

0

Żeby wiedzieć skąd ten NullPointer musisz wyświetlić/zalogować StackTrace. Najlepiej za pomocą jakiegoś logera. Najlepiej za pomocą Logback

0

No cóż, uczę się...
Ale bardzo dziękuję za odpowiedź Panu Kamilowi.
Trudno będąc geografem przez prawie 30 lat, stać się nagle programistą :)
Ważne, że nawet po pięćdziesiątce ma się chęci, jeśli nie do zmiany profesji to przynajmniej do zapoznania się z czymś ciekawym :)
Ale sobie poradziłem! To, co poniżej, działa mi tak jak chcę.

private void showMapActionPerformed(java.awt.event.ActionEvent evt) {                                        

        for (int i = 1; i < table.getRowCount(); i++) {
            if (table.getModel().getValueAt(i, 1) != null) {
                String www = "jakiśAdresMojejStrony" + i + ".htm";
                try {
                    String URL = www;
                    java.awt.Desktop.getDesktop().browse(java.net.URI.create(URL));
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
            }
        }
        this.refresh();
    }      

1 użytkowników online, w tym zalogowanych: 0, gości: 1