将对象从一个JFrame传递到另一个JFrame

时间:2016-12-08 14:51:43

标签: java swing object jframe

好的,所以我需要这个电话簿,它的主界面是JFrame。我把一个JTable放在里面,带有firstName,lastName,ID,手机和手机。

我的想法是,例如,我希望在表中添加一个新的订阅者,并且我有一个ADD按钮。因此,当您按下ADD按钮时,它会创建另一个JFrame的实例,其中包含相应的按钮和文本字段,允许您输入订阅者的字段(名称等)。

问题是,在创建订阅服务器之后,如何将此订阅服务器传递回包含ADD按钮的“主JFrame”?我总是得到一个NullPointerException,即使我为订阅者建立了一个getter。

我甚至将订阅者声明为静态,然后在与ADD JFrame中“OK”按钮对应的方法中初始化它。

在我看来,订阅者只生活在该方法的范围内(即使我已经在类中声明它是静态的,并且尚未初始化它)。

以下是一些代码:

public class AdaugaGUI extends javax.swing.JFrame {

    private static Abonat abonat;

        public static Abonat getAbonat() {
            return abonat;
        }

    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
    NrTel nrTel = new NrTel(telefonFixFormattedTextField.getText(), telefonMobilFormattedTextField.getText());
    abonat = new Abonat(numeTextField.getText(), prenumeTextField.getText(), cnpFormattedTextField.getText(), nrTel);
    dispose();
}   

正如您所看到的,我在类的开头声明了“Abonat”,然后我将其值与用户在textFields中输入的值初始化,在方法“okButtonActionPerformed”中。

然后,在主JFrame(创建允许您创建新订阅服务器的辅助JFrame)中,这是该方法的外观(对于ADD按钮):

    private void btnAdaugaActionPerformed(java.awt.event.ActionEvent evt) {                                          
    AdaugaGUI adaugaGUI = new AdaugaGUI();
    adaugaGUI.setVisible(true);
    Abonat abonatAdaugat = adaugaGUI.getAbonat();
    System.out.println(abonatAdaugat.toString());
}        

我创建了adaugaGUI JFrame(允许您添加订阅者的那个);然后我创建一个订阅者并尝试使用get方法来获取用户添加的订阅者。

我在做某些逻辑上的错误吗?此方法是否“完全”执行,因此抛出NullPointerException,或者在用户在其他JFrame中添加信息时暂时挂起?

这非常令人困惑。

0 个答案:

没有答案