我的目的是:点击查询后,把查询内容都显示到JTable内,怎样才能实现,数据库已连接,用的是SQL Server2005!

解决方案 »

  1.   

    你需要把数据保存到一个二维数组中,然后通过 tableModule
      

  2.   

    class TableModel extends AbstractTableModel {
    private String[] headNames; private Object[][] data; private boolean[][] cellEditable; public ModuleTableModel(String[] headNames, Object[][] data) {
    this.headNames = headNames;
    this.data = data;
    if (data.length > 0)
    cellEditable = new boolean[data.length][data[0].length];
    else cellEditable = new boolean[0][0];
    for (int i = 0; i < data.length; i++) {
    Arrays.fill(cellEditable[i], true);
    }
    }
    }dataModel = new TableModel ....
    tb = new JTable(dataModel);
      

  3.   

    简单来讲,你需要扩展这两个类来构建你的Table,以及一个提供数据的类,
    构造table的阶段主要涉及三个函数
             tableViewer.setContentProvider(new TestContentProvider());     

    tableViewer.setLabelProvider(new TestLabelProvider());

    tableViewer.setInput(PassengerFactory.getPeoples(result));
    ============================================================================================
    public class TestContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) {
    // TODO Auto-generated method stub
    if(inputElement instanceof List)
    return ((List)inputElement).toArray();
    return null;
    } public void dispose() {
    // TODO Auto-generated method stub } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    // TODO Auto-generated method stub }}
    =================================================================================================
    另外一个类:class TestLabelProvider implements ITableLabelProvider  实现其中的getColumnText()方法;
    =================================================================================================
    public class PassengerFactory {
     public static List getPeoples(ResultSet rs){   //工厂的静态方法
            List list = new ArrayList();
    try {
            ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        String colname="";

    while(rs.next())
    {
    PassengerEntity pe=new PassengerEntity();
    for(int j=0;j<columnCount;j++){
    int i=j+1;
    Object value=rs.getObject(i);
    switch (j){
    case 0:
    pe.setId(value.toString());
    break;
    case 1:
    pe.setFlightnumber(value.toString());
    break;
    case 2:
    pe.setFlightdate(value.toString());
    break;
    case 3:
    pe.setPassengername(value.toString());
    break;
    case 4:
    pe.setPassengersex(value.toString());
    break;
    case 5:
    pe.setCabin(value.toString());
    break;
    case 6:
    pe.setSegment(value.toString());
    break;
    case 7:
        pe.setSeatnumber(value.toString());
        break;
    case 8:
    pe.setBoardnumber(value.toString());
    break;
    case 9:
    pe.setBoardtime(value.toString());
    break;
    case 10:
    pe.setBaggage(value.toString());
    break;
    case 11:
    pe.setBweight(value.toString());
    break;
    case 12:
    pe.setUpdatetime(value==null?"---":value.toString());
    break;
    default:
    break;
    }

     }
    list.add(pe);
    }


    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } //取得数据表中的字段数目,类型等返回结果  return list;
     }}
    目的:返回一个List用作tableViewer数据源!你可以按照这个思路 试一下
      

  4.   

    楼主,JDK的demo\jfc\TableExample\src目录下有个TableExample的例子,完全实现你的要求,可以自己输入sql语句,点Fetch按钮后查询结果显示在JTable中。
    以前用这个写过数据库的工具
      

  5.   

    frame = new JFrame();
    frame.setBounds(100, 100, 500, 375);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTable table = new JTable();
    final JScrollPane scrollPane = new JScrollPane();

    Vector<String> tableData = new Vector<String>();
    Vector<String[]> rowData=new Vector<String[]>();

    DefaultTableModel model=(DefaultTableModel) table.getModel();
    model.setDataVector(rowData, tableData); scrollPane.getViewport().add(table,null);
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);

    model.addColumn("姓名");
    model.addColumn("性别");
    model.addRow(new String[]{"刘德华","45"});