2014-06-12 19 views
2

Я работаю над проектом «Система управления больницей» в Java Swing. Теперь на странице записей я хочу показать все сохраненные записи пациентов в формате таблицы. Но я никогда не работал с JTable в качелях. Теперь, когда я пытался получить записи в простой программе, он печатает все записи на консоли в цикле for, но когда я иду на JFrame и пытаюсь получить записи на JTable, вместо создания таблицы появляется сообщение об ошибке вроде:Как создать простую таблицу в Java Swing?

Ex_test.java:51: cannot find symbol, symbol : constructor JTable(java.lang.String[],java.lang.String[][]) 
location: class javax.swing.JTable, JTable table=new JTable(column,data); 

Может ли кто-нибудь сказать мне, в чем проблема в моем коде?

База данных MS-Access 2007.

import javax.swing.*; 
import javax.swing.JTable; 
import java.awt.event.*; 
import java.awt.*; 
import java.sql.*; 

public class Ex_test extends JFrame 
{ 
    public static void main(String[] args) 
    { 
     Ex_test ob=new Ex_test(); 
    } 
    int i=0; 
    String column[]; 
    String data[][]; 
    //JTable table; 
    public Ex_test() 
    { 
     super("Array"); 
     String[] id=new String[15]; 
     String[] name=new String[15]; 
     String[] contact=new String[15]; 

     try 
     { 
      Connection con; 
      Statement st; 
      ResultSet rs; 

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      con=DriverManager.getConnection("jdbc:odbc:test"); 
      st=con.createStatement(); 
      rs=st.executeQuery("select * from test"); 
      String column[]={"ID","NAME","CONTACT"}; 
      while (rs.next()) 
      { 
        id[i]=rs.getString("id"); 
        name[i]=rs.getString("sname"); 
        contact[i]=rs.getString("contact"); 
        i++; 
      } 
      for (i=0;i<4 ;i++) 
      { 
       System.out.println(""+id[i]+name[i]+contact[i]); 
       String data[][]={{id[i],name[i],contact[i] }};    
      }   
     } 
     catch (Exception e) 
     { 
     } 
     JTable table=new JTable(column,data); 
     setSize(1000,1000); 
     setVisible(true);  
    } 
} 

ответ

5
JTable table=new JTable(column,data); // wrong parameters 

Конструктор ожидает от вас указать данные в качестве первого параметра:

JTable table=new JTable(data, column); 

Не использовать массивы для чтения данных из базы данных. Вы не знаете, насколько велики массивы. Вместо этого используйте Vectors, так как DefaultTableModel будет поддерживать Vectors.

Ознакомьтесь с исходным кодом TableFromDatabaseExample.java от Table From Database, чтобы получить общий код, чтобы вы начали заполнять JTable данными из базы данных.

Кроме того, не используйте пустой блок catch в коде SQL. Вы должны отобразить исключение.

+0

@AndrewThompson, я вижу, вы еще не читали мой блог. Первое предложение, которое он делает, - это поиск в Интернете для 'ResultSetTableModel' :) – camickr

+0

Ой, мой плохой. : P Шум удален. –

+0

Спасибо большое @camickr :-) – Heisenberg

Смежные вопросы