Obsługa wyjątku

0

Witam
Do załączonego kodu chcę dodać jeszcze obsługę wyjątku żeby wyświetlał coś w stylu brak wiersza do usunięcie (ArrayIndexOutOfBoundsException) Co powinno być po otwarciu bloku try{.. jak zapisać że wartość tablicy = 0? I czy w dobrym miejscu wrzucilem obsługę wyjatku?(zaznaczone na czerwono

Pozdrawiam

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TableDemo extends JPanel {
public TableDemo() {
super(new GridLayout(1, 0));

            String[] columnNames = { "Imię", "Nazwisko","Pensja" };

            Object[][] data = { };

            final DefaultTableModel tab = new DefaultTableModel(data, columnNames);
            final JTable table = new JTable(tab);
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
            table.setFillsViewportHeight(true);

            JScrollPane scrollPane = new JScrollPane(table);

            add(scrollPane);

            JButton mb = new JButton("Dodaj");
            mb.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent arg0) {
                            Object[] dd = { JOptionPane.showInputDialog( null,"Podaj imię"), JOptionPane.showInputDialog(null, "Podaj nazwisko"),
                                            JOptionPane.showInputDialog(null, "Podaj pensję"),  };
                            tab.addRow(dd);
                           
                    }
            });
            mb.setPreferredSize(new Dimension(20, 5));
            add(mb, BorderLayout.SOUTH);

            JButton mc = new JButton("Usuń");
            mc.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                            tab.removeRow(table.getSelectedRow());
                    }
            });
            mc.setPreferredSize(new Dimension(80, 20));
            add(mc, BorderLayout.NORTH);
            try{
                     
                     }
                     catch(ArrayIndexOutOfBoundsException e){
                     System.out.println("brak wierszy");
                     }
                     }
                   
   

    // GUI
    private static void createAndShowGUI() {

            JFrame frame = new JFrame("TableDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            TableDemo newContentPane = new TableDemo();
            newContentPane.setOpaque(true);
            frame.setContentPane(newContentPane);

            frame.pack();
            frame.setVisible(true);
    }

    public static void main(String[] args) {

            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                            createAndShowGUI();
                    }
            });
    }

}

0

Zasadniczo obsługa wyjątków wygląda tak:

try{
// kod mogący wygenerować wyjątek
}
catch (typWyjątku e){
// kod obsługi wyjątku, czyli twój komunikat
}

poza tym jak umieszczasz kod to przydałoby się kolorowanie składni, czyli w tym przypadku tagi (bez spacji):

< code = java >
kod
< / code >

0

Lapanie IndexArrayOutOfBoundException jest niezalecane, lepiej w miejscy gdzie taki wyjatek moze wyskoczyc dokonac sprawdzenia wielkosci listy / modelu i ewentualnie jak test zawiedzie to podac komunikat.

0

a mogłbyś pomoc?

Pozdr

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