title: JTable not updating itself
body: <p>I want my jtable update itself when i pick a table from database in combobox. But nothing happens and program gives array index out of bounds exception. I used <code>repaint()</code> and <code>revalidate()</code> functions but i couldn't find a solution.</p>
  
  <p><strong>EDIT:</strong> I have now null pointer exception at right here: <code>table.setModel(tableModel);</code></p>
  
  <pre><code>   public class DBC extends JFrame{
  
      static String tablo;
      static JTextField tf = new JTextField(20);
      static int columnCount;
      static JPanel tfPanel = new JPanel();
      static String[] sutunlar;
      static JLabel sutunLabel;
      static JPanel sutunPanel = new JPanel(new BorderLayout());
      static JTable table;
      static JScrollPane scrollPane;
      static DefaultTableModel tableModel;
  
      public static void main(String[] args) throws Exception {
  
          Class.forName("com.mysql.jdbc.Driver");
          Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/project"
                    ,"root","123456789");
  
          final Statement statement = connect.createStatement();
  
          JLabel tabloSec = new JLabel("Tablo Seçin:");
          final JComboBox&lt;String&gt; tablolar = new JComboBox&lt;String&gt;();
          final DatabaseMetaData md = connect.getMetaData();
          final ResultSet rs = md.getTables(null, null, "%", null);
  
          while (rs.next()) {
              tablolar.addItem(rs.getString(3));
          }
  
          tablolar.addActionListener(new ActionListener(){
  
              @Override
              public void actionPerformed(ActionEvent arg0) {
  
                  tablo = tablolar.getSelectedItem().toString();
  
                  try {
  
                       ResultSet rs2 = statement.executeQuery("SELECT * FROM "+tablo);
                       ResultSetMetaData rsmd = rs2.getMetaData();
                       columnCount = rsmd.getColumnCount();
  
                       sutunlar = new String[columnCount];
  
                       Object columnNames[] = new Object[columnCount];
                       Object rowData[][] = {{""}};
                       tableModel = new DefaultTableModel(rowData, columnNames);
  
                           for(int i=0;i&lt;columnCount;i++){
  
                               sutunlar[i] = rsmd.getColumnLabel(i+1);
                               columnNames[i] = sutunlar[i];
  
                               }
  
                           tableModel.addRow(rowData);
                           tableModel.addColumn(columnNames);
                           table.setModel(tableModel);
                           table.repaint();
                           scrollPane = new JScrollPane(table);
                           sutunPanel.add(scrollPane);
                           sutunPanel.revalidate();
                           sutunPanel.repaint();
  
  
                  } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }
          });
  
          JButton ekle = new JButton("Ekle");
          ekle.addActionListener(new ActionListener(){
  
              @Override
              public void actionPerformed(ActionEvent e) {
  
                  try {
                      switch(tablo){
                      case "department":
  
                          statement.executeUpdate("INSERT INTO department(Name,Location) VALUES('"+tf.getText()+"')");
                      case "employee":
  
                          statement.executeUpdate("INSERT INTO employee(Id,FirstName,LastName,Sex,Address,Email,Salary,BirthDate,JoinDate) VALUES('"+tf.getText()+"')");
                      case "engineer":
  
                          statement.executeUpdate("INSERT INTO engineer(EngineerType) VALUES('"+tf.getText()+"')");
                      case "manager":
  
                          statement.executeUpdate("INSERT INTO manager(Department) VALUES('"+tf.getText()+"')");
                      case "project":
  
                          statement.executeUpdate("INSERT INTO project(Name,Number,Value) VALUES('"+tf.getText()+"')");
                      case "secretary":
  
                          statement.executeUpdate("INSERT INTO secretary(TypingSpeed) VALUES('"+tf.getText()+"')");
                      }
  
                  } catch (SQLException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                  }
              }
          });
  
          JButton cik = new JButton("Çık");
          cik.addActionListener(new ActionListener() {
  
              @Override
              public void actionPerformed(ActionEvent e) {
  
                  System.exit(0);
              }
          });
  
          JPanel panel = new JPanel(new FlowLayout());
  
          panel.add(tabloSec);
          panel.add(tablolar);
          panel.add(sutunPanel);
          panel.revalidate();
          panel.add(ekle);
          panel.add(cik);
  
          JFrame frame = new JFrame("Deneme");
          frame.setSize(600,600);
          frame.setLocationRelativeTo(null);
          frame.add(panel);
          frame.setVisible(true);
        }
      }
  </code></pre>