gpt4 book ai didi

java - 在 jTable 中选择一行会产生错误

转载 作者:行者123 更新时间:2023-11-29 03:27:36 25 4
gpt4 key购买 nike

我在这里尝试做的是,当我在我的表中选择一行时,加载数据后,它应该在文本字段 (selectedRowTF) 中显示所选行的值。但是只要我点击 jButton,就会生成以下错误 -

java.lang.ArrayIndexOutOfBoundsException: -1

由于错误甚至在数据加载之前就发生了,所以我什至没有机会选择一行。

您还认为我使用正确的代码来获取行的值吗?

Stack Trace

DefaultTableModel model;
model=(DefaultTableModel)tbl.getModel();
try {
Class.forName("java.sql.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/divign","root","password");
Statement stmt=con.createStatement();

int row=tbl.getSelectedRow();
String rowSelected=(tbl.getModel().getValueAt(row, 0).toString());

String query="SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = '"+customerIdTF.getText()+"' ;";

ResultSet rs=stmt.executeQuery(query);
if(rs.next()) {
model.addRow (new Object[ ] {
rs.getInt(1),rs.getString(2),rs.getString(3)
});
selectedRowTF.setText(""+rowSelected);
}
rs.close();
stmt.close();
con.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e.toString());
}

最佳答案

如果您只是加载数据,tbl.getSelectedRow() 返回 -1

之后您尝试获取无效行第一列的字符串值。

String rowSelected=(tbl.getModel().getValueAt(row, 0).toString());

=> getValueAt 导致您的异常。

尝试以下操作:

String rowSelected = "";
if(row != -1)
{
rowSelected = tbl.getModel().getValueAt(row, 0).toString();
}

编辑正如您所说,您只是想获取选定的值,您的代码位置错误。

您正试图在加载数据时获取所选行的值。但那时你没有选择一行。我认为您需要类似的东西(在表格中单击鼠标即可打印出值):

tbl.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
int row = table.getSelectedRow();
if (row > -1) {
String value = (table.getModel().getValueAt(row, 0).toString());
System.out.println("Value of row " + row + " col 0: '" + value + "'");
selectedRowTF.setText(value);
} else {
System.out.println("Invalid selection");
}
}
});

或者您可以通过单击按钮对选择使用react:

private void btClickActionPerformed(java.awt.event.ActionEvent evt) {                                        
int row = table.getSelectedRow();
if (row > -1) {
String value = (table.getModel().getValueAt(row, 0).toString());
System.out.println("Value of row " + row + " col 0: '" + value + "'");
selectedRowTF.setText(value);
} else {
System.out.println("Invalid selection");
}
}

关于java - 在 jTable 中选择一行会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com