怎么把数据库表的内容传入JTable
本帖最后由 albertwmm 于 2012-11-14 09:49:17 编辑 数据库中写了张表 姓名,学号,班级,性别,地址
然后想把这表的内容传入JTable , 并且想对学生中的某个人点击 弹出一个专门的JFrame 来显示这个学生的其他信息。
下面是我写的。。 为什么打开来是空白呢 = = 。
还有如何设置这个学生列的监听呢
public class XSTable extends JFrame{
/**
*
*/
private static final long serialVersionUID = 4681526555438628510L;
public static void main(String[] args) {
new XSTable();
}
Connection conn = null ;
Statement st = null ;
ResultSet rs = null;
public XSTable(){
JTable table=new JTable();
DefaultTableModel model = (DefaultTableModel)table.getModel();
final String[][] data={ };
try {
conn =JdbcUtils.getConnection(); //我写了工具类,注册链接释放的代码
st = conn.createStatement();
rs = st.executeQuery("select*from CanKao_table");
while(rs.next()){
sop.Sop("连接成功"); //工具类中的输出控制台
for(int i=1;i<=model.getRowCount();i++){
data[0][1] = "姓名";
data[0][2] = "学号";
data[0][3] = "性别";
data[0][4] = "班级";
data[0][5] = "地址";
data[i][1] = rs.getString(1).trim();
data[i][2] = rs.getString(2).trim();
data[i][3] = rs.getString(3).trim();
data[i][4] = rs.getString(4).trim();
data[i][5] = rs.getString(5).trim();
sop.Sop("连接成功");
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally{
JdbcUtils.free(rs, st, conn);
}
table.setModel(model);
table.setPreferredScrollableViewportSize(new Dimension(500,500));
JScrollPane scrollPane=new JScrollPane(table);
this.getContentPane().add(scrollPane,BorderLayout.CENTER);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
this.pack();
this.setVisible(true);
}
}
public static void main(String[] args) throws Exception{ new XWTable(); }
// TODO: handle exception
e.printStackTrace();
}
}
然后你看看报的是什么异常,把那个异常和行号发上来。
[其他解释]
控制台有异常输出吧
[其他解释]
上面的代码里data这个数组没有初始化。
[其他解释]
有前辈看看 帮解答下吗
[其他解释]
final Object[][] data=new Object[100][5] ;
public class XWTable extends JFrame{
/**
*
*/
private static final long serialVersionUID = 10L;
public static void main(String[] args) throws Exception{
new XWTable();
}
Connection conn = null ;
Statement st = null ;
ResultSet rs = null;
JTable table ;
TableModel model ;
public XWTable(){
model = new TableModel();
table=new JTable();
table.setModel(model);
table.setPreferredScrollableViewportSize(new Dimension(500,500));//设置窗口大小
JScrollPane scrollPane=new JScrollPane(table); //声明滚动条
this.getContentPane().add(scrollPane,BorderLayout.CENTER);//将滚动条添加到窗口
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
this.pack();
this.setVisible(true);
}
class TableModel extends DefaultTableModel{
/**
*
*/
private static final long serialVersionUID = 10L;
final String[] columnNames={"姓名","学号","性别","班级","地址"};
final Object[][] data=new Object[100][5] ;
public TableModel(){
try {
conn =JdbcUtils.getConnection();
st = conn.createStatement();
rs = st.executeQuery
("select* from CanKao_table");
Vector ve = new Vector();
ve.removeAllElements();
model.fireTableStructureChanged();
while(rs.next()){
sop.Sop("连接成功");
Vector ve_col = new Vector();
ve_col.addElement(rs.getString(1).trim());
ve_col.addElement(rs.getString(2).trim());
ve_col.addElement(rs.getString(3).trim());
ve_col.addElement(rs.getString(4).trim());
ve_col.addElement(rs.getString(5).trim());
ve.addElement(ve_col);
sop.Sop("连接成功");
}
model.fireTableStructureChanged();
}
catch (Exception e) {
e.printStackTrace();
}
finally{
JdbcUtils.free(rs, st, conn);
}
}
public int getRowCount() {
//返回行的数目
return data.length;
}
public int getColumnCount() {
//返回列的数目
return columnNames.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
// 返回指定指定行、列的数据
return data[rowIndex][columnIndex];
}
public String getColumnName(int columnName){
//指定列的名字
return columnNames[columnName];
}
public boolean isCellEditable(int row,int col){
//不可编辑
return false;
}
}
}
new XWTable();
public XWTable(){
return data.length;