我收到错误“非静态方法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,但无法理解我在哪里/如何。
提前感谢您的帮助。
答案 0 :(得分:1)
您需要将CheckIn_Search
的实例传递给包含btnOKActionPerformed
方法的类实例,例如在构造函数期间。然后,您可以将引用存储在字段中。然后,如果checkInSearch.coSearchReturn(text)
是该字段的名称,则可以致电checkInSearch
。
如果还没有CheckIn_Search
的实例,则调用new CheckIn_Search().coSearchReturn(text)
(考虑无参构造函数)。但我认为它已经存在,因为jPanel1
和jPanel3
字段。
答案 1 :(得分:1)
在条件内创建对象或作为类字段,因此您可以使用您的方法:
if (y.equals(coNum)) {
CheckIn_Search checkIn_Search = new CheckIn_Search();
checkIn_Search.coSearchReturn(text);
}