我建了一个jtable只有二行,但要读数据库里的数据,有10多行数据,这样读进去就会出错。要怎么办啊?
下面是核心代码段,有些不完整,只是基本意思。public class ServerFrame extends JFrame {
Connection conn; Statement stat; private ServerListenThread listenThread; DefaultTableModel defaultModel = null; public ServerFrame() { init();
setSize(800, 600);
setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} public void init() {
String[] columnNames = { "预定菜单编号", "菜单明细号", "房间容量", "就餐人数", "预定就餐时间",
"下单时间" };
final Object[][] AheadInfo_rowData = new Object[22][7];
/*defaultModel = new DefaultTableModel(AheadInfo_rowData, columnNames);
final JTable AheadInfo = new JTable(defaultModel);*/
final JTable AheadInfo = new JTable(AheadInfo_rowData, columnNames);
JScrollPane scrollPane = new JScrollPane(AheadInfo); AheadInfo.getTableHeader().setReorderingAllowed(false);
AheadInfo.setEnabled(false);
TitledBorder tableAhead = BorderFactory.createTitledBorder("点菜预定信息");
scrollPane.setBorder(tableAhead); p0.add(scrollPane, new BorderLayout().CENTER); getAheadDate = new JButton("查看/刷新");
getAheadDate.setEnabled(false);
p0_b.add(getAheadDate);
getAheadDate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getAheadDate(AheadInfo_rowData);
AheadInfo.updateUI();
}
});
} public Object getAheadDate(Object[][] rowData) {
try {
String CountAheadInfo = "select * from Ahead";
PreparedStatement ps = conn.prepareStatement(CountAheadInfo);
ResultSet rs = ps.executeQuery();
int count = 0;
while (rs.next()) {
rowData[count][0] = rs.getString("AheadId");
rowData[count][1] = rs.getString("AheadName");
rowData[count][2] = rs.getString("EatRoom");
rowData[count][3] = rs.getString("AheadPeople");
rowData[count][4] = rs.getString("AheadTime");
rowData[count][5] = rs.getString("OrderTime");
count++;
}
} catch (Exception ex) {
System.out.println("读取Ahead表错误!");
ex.printStackTrace();
}
return rowData;
} public static void main(String[] args) {
ServerFrame app = new ServerFrame();
}

解决方案 »

  1.   

    final Object[][] AheadInfo_rowData = new Object[22][7]; 
    与你定义的列数肯定不对。
      

  2.   

    这个是copy错误。就当今7列吧。
      

  3.   

    我的一般做法是从结果集里直接得到一个Object[][] obj,直接放到JTable AheadInfo = new JTable(obj, columnNames); 
    去帮助文档里面先看看这个JTable(Object[][] rowData, Object[] columnNames) 
      

  4.   

    我用的是返回vector的方法做的!
    public void addTable() {
            Vector v = new Vector();
            v.add("物资编号");
            v.add("物资名称");
            v.add("物资类型");
            v.add("单价");
            v.add("数量");
            v.add("购买时间");
            v.add("物资状态");
            v.add("备注");
            Vector vv = new UserMainfo().getMinfo();
            DefaultTableModel dm = null;
            dm = new DefaultTableModel(vv, v);
            jTable1.setModel(dm);
        }