Java按钮事件调用另一个类中的方法

时间:2014-12-28 22:08:01

标签: java swing static-methods

我收到错误“非静态方法coSearchReturn(String [])无法从静态上下文引用。”

我已经阅读了一些关于此错误的文章,似乎无法将它们应用于我的情况。不是说我的情况很特别,只是我有限的经历!我所拥有的是一个jTable,用户在表中选择一行,当用户单击OK按钮时,我将表值传递给另一个类中的另一个表。我在目标表单中创建了一个方法来处理数据,我试图从按钮事件中调用该方法。从我所读到的,我需要实例化它来调用它,但我无法弄清楚在哪里/如何。

这是按钮事件代码。我从表中获取所选行,使用行中的第一个值来引用返回构建表的ArrayList。 arraylist包含更多数据,显示在表格中,我需要全部数据。我想将arraylist中的正确值发送到目标方法/类中的表单。

   private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    int rowNum = jTable1.getSelectedRow();
    String coNum = jTable1.getValueAt(rowNum,0).toString();
    String[] text;

    int x = coSearchResults.size();
    for (int temp = 0; temp < x; temp++){
        text = coSearchResults.get(temp).split("\\|");
            //inner loop is for each column, in the row
            for (String y : text ){
            if (y.equals(coNum))  {
                CheckIn_Search.coSearchReturn(text);
            }
            }
    }         

    dispose();
}    

目标方法coSearchResults在另一个类CheckIn-Search中。现在,代码只是在jFrame中切换面板,但最终会填充我使用jPanel创建的表单。

    public void coSearchReturn(String[] results){
    jPanel1.setVisible(false);
    jPanel3.setVisible(true);
}    

我认为我需要做的是实例化coSeachReturn,但无法理解我在哪里/如何。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要将CheckIn_Search的实例传递给包含btnOKActionPerformed方法的类实例,例如在构造函数期间。然后,您可以将引用存储在字段中。然后,如果checkInSearch.coSearchReturn(text)是该字段的名称,则可以致电checkInSearch

如果还没有CheckIn_Search的实例,则调用new CheckIn_Search().coSearchReturn(text)(考虑无参构造函数)。但我认为它已经存在,因为jPanel1jPanel3字段。

答案 1 :(得分:1)

在条件内创建对象或作为类字段,因此您可以使用您的方法:

if (y.equals(coNum))  {
     CheckIn_Search checkIn_Search = new CheckIn_Search();
     checkIn_Search.coSearchReturn(text);
}