无法从另一个类调用方法

时间:2013-12-17 22:47:41

标签: java swing class methods

我有两节课。 主要在jframe中打开第二个,用户将按下按钮并从主类/ jframe editare(String value)触发一个方法,该方法将自动将一些数据添加到主jframe中的某些jtextfields。问题是它不会触发方法。我尝试从主类调用其他方法,它也没有调用它们。我尝试了很多东西,比如过去1-2小时,无法弄明白。< / p>

这是一些代码: 从第二个jframe:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
Test2 test2=new Test2();
test2.citireser(list.getSelectedValue().toString()); //won't work.works if i call it from the same method,the main one
test2.restart(); //won't work either
this.dispose(); }   

从第一个jframe开始,主要是:

public void citireser(String cur) {
    try {
        serializedPath = "C:/Inter/" + cur;
        InputStream file = new FileInputStream(serializedPath);
        InputStream buffer = new BufferedInputStream(file);
        ObjectInput input = new ObjectInputStream(buffer);

        String[] storeAllArraysREAD[] = (String[][]) input.readObject();
        prodr = storeAllArraysREAD[0];
        cantr = storeAllArraysREAD[1];
        pretr = storeAllArraysREAD[2];
        input.close();
        buffer.close();
        file.close();
       System.err.println("prodr[1]= "+prodr[1].toString());
        for (int m = 0; m < prodr.length - 1; m++) {

        allprod.get(m).setText(prodr[m]);
        allcant.get(m).setText(cantr[m]);
        allpret.get(m).setText(pretr[m]);
        produsnou();

    }

    } catch (ClassNotFoundException ex) {
        System.err.println("EROARE");
    } catch (IOException ex) {
       System.err.println("EROARE");
    }

}

编辑:好的,经过几个小时尝试不同的东西后我就明白了。

public class Opt extends javax.swing.JFrame implements Printable {

private final Test2 main; 

public Opt(Test2 aMain) {
     main = aMain;
    try {

    } catch (Exception e) {
        e.printStackTrace();
    }
    initComponents();
    jScrollPane2.getVerticalScrollBar().setPreferredSize(new Dimension(0, 0));
    jScrollPane2.getVerticalScrollBar().setUnitIncrement(16);

    citirel();

    if (list.getModel().getSize() == 0) {
        jButton1.setEnabled(false);
        jButton2.setEnabled(false);
    }

}

感谢您的帮助,我不知道应该选择谁作为正确的答案:(对不起其他人

2 个答案:

答案 0 :(得分:3)

此处的问题是您正在使用Test2的新实例。在执行的操作(第一个代码块)中,您将创建一个新的Test2(这将是第一帧)。您必须在某处(通常是字段)保留对创建的第一个Test2的引用。

如果您还有其他问题,请考虑修改问题并发布完整代码(至少完整的两个框架)。我的蜘蛛感觉告诉我,有一些背景缺失。

此外,我们有类似的姓氏。 : - )

答案 1 :(得分:1)

如果有任何错误,请纠正我,因为我试图从不完整的代码中理解你的程序:

  1. Test2(包含您的计划入口点JFrame的{​​{1}})会在某个时刻创建第二个类(也是main(string[]))并打开它。
  2. 当您单击第二个窗口中的某个按钮时,您希望修改JFrame窗口的某些元素,并关闭辅助窗口。
  3. 假设上述内容是正确的,我可以在您发布的代码段中看到一个明显的问题。

    Test2中,您正在创建 jButton3ActionPerformed对象,并对其进行修改。如果要修改原始窗口,则需要存储对其的引用。例如,需要一个Test2对象作为第二个类的参数,并将该参数存储为类中的字段。