好的,所以我需要这个电话簿,它的主界面是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中添加信息时暂时挂起?
这非常令人困惑。