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

Jak poprawić, żeby nie było: NullPointerException
Piotr Zięba
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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ć...

Kopiuj
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.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
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ć...

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

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.

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

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

Piotr Zięba
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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ę.

Kopiuj
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();
    }      

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.