这是我的第一个问题,请帮帮我。我尝试将方法getStelectedRow的值保存在int类型的变量(row)中,然后可以使用方法getValueAt(row,column)。我的问题是我的变量的值,它是-1,这意味着没有选择行,但我选择了一行。
错误是下一个:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
如果需要更多细节,请告诉我。谢谢。
我的代码是:
int row = jTablePersonal.getSelectedRow();
String query = "select * from table where id ='"+jTablePersonal.getValueAt(row,0)+"'";
当我调用方法“getValueAt(row,0)”时,错误指向变量“row”
答案 0 :(得分:1)
问题在于getSelectedRow();
getSelectedRow仅在当前选择表时才起作用
我的建议是,使用temp变量来获取最后一个selectrow以防止出错,比如
if(table.getSelectedRow()!=-1)
{
int lastselected=table.getSelectedRow();
}
答案 1 :(得分:1)
似乎是一个新手问题。鉴于你的解释
“我的问题是我的变量的值,它是-1,这意味着没有选择行,但我选择了一行。”
你没有在侦听器中使用此代码,你喜欢它的构造函数或其他东西。您希望将代码放在侦听器中。像
这样的东西button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row != -1) {
// do something
}
}
});
如果您使用的是Netbeans GUI Builder工具,则可以
在设计视图中右键单击按钮,然后转到Events -> Action -> actionPerformed
转到您的源视图,您应该会看到一些自动生成的代码,例如
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
}
在那里写代码。
您还应该花些时间阅读How to write Event Listeners。 GUI程序是事件驱动的,因此您需要通过注册监听器来学习如何响应这些事件