JTable 不显示超过 5 列
JTable not showing more than 5 columns
我需要通过 JTABLE 显示来自 tables 的数据,我 googled 数小时,终于成功找到了执行此操作的代码,并且工作正常但存在一个问题我认为来自 netbeans
这是我的 table
它有 6 列,
这是我的jtable
这是结果
现在在这里发帖之前,我尽力 google 或阅读关于 jtables 的 oracle 文档,找不到关于这个奇怪问题的任何信息,
如果我使用 4 列,它显示 4 列数据,我从设计中增加了 1 列,它开始显示 5 列数据(完美)当我最后再添加 1 列时,它仍然显示 5 列数据
这是代码
try {
MyConnection mc = new MyConnection();
Class.forName(mc.driver);
Connection connect = DriverManager.getConnection(mc.login);
Statement smt = connect.createStatement();
ResultSet rs = smt.executeQuery("select * from library_member");
ResultSetMetaData rsmeta = rs.getMetaData();
int columns = rsmeta.getColumnCount();
DefaultTableModel dtm = new DefaultTableModel();
Vector columns_name = new Vector(), data_rows = new Vector();
for(int i = 1; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}
dtm.setColumnIdentifiers(columns_name);
while(rs.next()){
data_rows = new Vector();
for(int j = 1; j < columns; j++){
data_rows.addElement(rs.getString(j));
}
dtm.addRow(data_rows);
}
jTable1.setModel(dtm);
} catch (Exception ex) {
ex.printStackTrace();
}
P.S 它没有显示的列我认为是因为 member_email 得到了 1 个空值,如果它是真的,应该如何允许它,
问题!! :如何将 rowCount 从 4 增加?它的 uneditable 在 netbeans designview 中,我没有足够的时间自己创建一个 jtable
我在 member_id=2 更新了 member_email,仍然没有显示 :(
你数错了。将for循环中的i = 1改为i = 0。
for(int i = 0; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i+1));
}
还有这里:
for(int j = 0; j < columns; j++){
data_rows.addElement(rs.getString(j+1));
}
另请注意 MadProgrammer 的评论,即 JDBC 行索引从 1 开始,而不是 0。这就是为什么您还需要 getColumnName(i+1) 和 getString(j+1)。
或者您可以在循环中从 1 开始计数并测试 <= 列,例如:
for(int i = 1; i <= columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}
我需要通过 JTABLE 显示来自 tables 的数据,我 googled 数小时,终于成功找到了执行此操作的代码,并且工作正常但存在一个问题我认为来自 netbeans
这是我的 table
它有 6 列,
这是我的jtable
这是结果
现在在这里发帖之前,我尽力 google 或阅读关于 jtables 的 oracle 文档,找不到关于这个奇怪问题的任何信息, 如果我使用 4 列,它显示 4 列数据,我从设计中增加了 1 列,它开始显示 5 列数据(完美)当我最后再添加 1 列时,它仍然显示 5 列数据
这是代码
try {
MyConnection mc = new MyConnection();
Class.forName(mc.driver);
Connection connect = DriverManager.getConnection(mc.login);
Statement smt = connect.createStatement();
ResultSet rs = smt.executeQuery("select * from library_member");
ResultSetMetaData rsmeta = rs.getMetaData();
int columns = rsmeta.getColumnCount();
DefaultTableModel dtm = new DefaultTableModel();
Vector columns_name = new Vector(), data_rows = new Vector();
for(int i = 1; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}
dtm.setColumnIdentifiers(columns_name);
while(rs.next()){
data_rows = new Vector();
for(int j = 1; j < columns; j++){
data_rows.addElement(rs.getString(j));
}
dtm.addRow(data_rows);
}
jTable1.setModel(dtm);
} catch (Exception ex) {
ex.printStackTrace();
}
P.S 它没有显示的列我认为是因为 member_email 得到了 1 个空值,如果它是真的,应该如何允许它,
问题!! :如何将 rowCount 从 4 增加?它的 uneditable 在 netbeans designview 中,我没有足够的时间自己创建一个 jtable
我在 member_id=2 更新了 member_email,仍然没有显示 :(
你数错了。将for循环中的i = 1改为i = 0。
for(int i = 0; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i+1));
}
还有这里:
for(int j = 0; j < columns; j++){
data_rows.addElement(rs.getString(j+1));
}
另请注意 MadProgrammer 的评论,即 JDBC 行索引从 1 开始,而不是 0。这就是为什么您还需要 getColumnName(i+1) 和 getString(j+1)。
或者您可以在循环中从 1 开始计数并测试 <= 列,例如:
for(int i = 1; i <= columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}