为什么我的jtable getSelectedRow()的方法不起作用?

时间:2014-08-02 14:26:39

标签: java swing jtable

这是我的第一个问题,请帮帮我。我尝试将方法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”

2 个答案:

答案 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工具,则可以

  1. 在设计视图中右键单击按钮,然后转到Events -> Action -> actionPerformed

  2. 转到您的源视图,您应该会看到一些自动生成的代码,例如

    jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    }
    

    在那里写代码。

  3. 您还应该花些时间阅读How to write Event Listeners。 GUI程序是事件驱动的,因此您需要通过注册监听器来学习如何响应这些事件