Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的jtable getSelectedRow()的方法不';不行?_Java_Swing_Jtable - Fatal编程技术网

Java 为什么我的jtable getSelectedRow()的方法不';不行?

Java 为什么我的jtable getSelectedRow()的方法不';不行?,java,swing,jtable,Java,Swing,Jtable,这是我的第一个问题,请帮帮我。我尝试将getStelectedRow方法的值保存在一个类型为int的变量(行)中,以便下次可以使用getValueAt方法(行,列)。我的问题是变量的值,它是-1,这意味着该行未被选中,但我正在选择一行 下一个错误是: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 如果需要更多细节,请告诉我。谢谢 编辑: 我的代码是: int row = j

这是我的第一个问题,请帮帮我。我尝试将getStelectedRow方法的值保存在一个类型为int的变量(行)中,以便下次可以使用getValueAt方法(行,列)。我的问题是变量的值,它是-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”

问题是关于getSelectedRow()

getSelectedRow仅在当前选中表格时有效

我的建议是,使用temp变量来获取last selectedrow以防止错误,如

if(table.getSelectedRow()!=-1)
{
    int lastselected=table.getSelectedRow();
}

似乎是个新手问题。给你解释一下

我的问题是变量的值为-1,这意味着该行未被选中,但我正在选择一行

您没有在侦听器中使用此代码,而是将其作为构造函数或其他东西。您希望将代码放在侦听器中。差不多

button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        int row = table.getSelectedRow();
        if (row != -1) {
            // do something
        }
    }
});
如果您正在使用Netbeans GUI构建器工具,您可以

  • 在“设计”视图中右键单击按钮,然后转到
    事件->动作->动作执行

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

    jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    }
    
    在那里写代码


  • 你也应该花些时间阅读。GUI程序是事件驱动的,因此您需要学习如何通过注册侦听器来响应这些事件

    对代码的抽象太多,对您没有帮助。创建表时,所选行默认为-1。因此,除非用户实际单击了一行,否则该值将为-1。如果您认为仍然存在问题,请发布您的演示问题的帖子。@camickr我选择行,然后按一个包含编辑代码的jbutton,Netbeans会向我抛出错误:)好的,对不起,我的代码太长xD。。。我将使用pastebin.com xD。。等等minute@GogoMix,
    我的代码太长了
    请阅读我的评论!!!我们不想要你的整个计划!!!我们想让你做一些基本的调试。您所需要的只是一个带有JTable和JButton的简单示例。这个程序大约有20行代码。程序将进行编译,以便在通过读取代码看不到问题时执行代码。一旦理解了getSelectedRow()方法工作原理的基本概念,就可以调试自己的代码。我们不是来为您调试数百行代码的。