是啊。 是有异常输出 连接成功 java.lang.ArrayIndexOutOfBoundsException: 0 at com.JingQiao.Table.XWTable.<init>(XWTable.java:55) at com.JingQiao.Table.XWTable.main(XWTable.java:21)
上面的代码里data这个数组没有初始化。
数组首先的初始化,还有,最好使用vector来存储你查出来的数据吗,,然后把它夹在表格上显示。
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();
是啊。 是有异常输出 连接成功
java.lang.ArrayIndexOutOfBoundsException: 0
at com.JingQiao.Table.XWTable.<init>(XWTable.java:55)
at com.JingQiao.Table.XWTable.main(XWTable.java:21)
/**
*
*/
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;
}
}
}
还是运行不出来,eclipse没有明显的错误
出现异常 NullPointerException
你可以申明一个BUTTON组,然后在table的最后一栏里面添加一个按钮,然后对这个按钮添加监听就行了。
你的这个思路实现起来应该不会太难,当然,现在这种功能一般都使用SSH来实现了。
但是java的页面功能是很简单的,不是很好设置,如果从数据库提取的数据太多的话,一个页面显示不了怎么弄?分栏么?这又得麻烦一整子。
不过做这个还是挺有趣的,至少图形界面是比单纯的代码有意思多了。
今天有点晚了,以后如果代码中如果有错误,当然记得附上代码和报错的行数,或者思路上有问题可以回下贴,我有空帮你看看。
new XWTable(); public XWTable(){
还有91行 return data.length;这行时有时没得 = = 这是为什么啊
改成
public static void main(String[] args){
try {
new XWTable();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
然后你看看报的是什么异常,把那个异常和行号发上来。