私はテーブルを持っていて、それが私のeditButton
アクションメソッドです:
public void editAction() {
if (table.getSelectedRow() > -1) {
String oldFName = table.getValueAt(table.getSelectedRow(), 1).toString();
String oldLName = table.getValueAt(table.getSelectedRow(), 2).toString();
String oldGender = table.getValueAt(table.getSelectedRow(), 3).toString();
System.out.println(oldFName); // prints correctly
System.out.println(oldLName); // prints correctly
System.out.println(oldGender); // prints correctly
AddUserDialog userDialog = new AddUserDialog(this, oldFName, oldLName, oldGender);
} else JOptionPane.showMessageDialog(null, "Select A Row");
}
私の AddUserDialog クラス:
public AddUserDialog(JFrame owner, String oldFname, String oldLname, String oldGender) {
super(owner, "Edit User Information", true);
fNameTf.setText(oldFname); // First name text field
lNameTf.setText(oldLname); // Last name text field
if (oldGender.equals("Male")) maleRb.setSelected(true); //Male radio Button
else femaleRb.setSelected(true); //Female radio Button
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocation(400, 100);
setVisible(true);
pack();
}
...
}
ここで、行を選択して編集ボタンをクリックすると、古い名と古い姓と古い性別がコンソールに正しく印刷されますが、私のIDEは例外がここにあると言います:
fNameTf.setText(oldFname); // why is Null here?!
更新 2 番目の方法:
public void editAction() {
if (table.getSelectedRow() > -1) {
String oldFName = table.getValueAt(table.getSelectedRow(), 1).toString();
String oldLName = table.getValueAt(table.getSelectedRow(), 2).toString();
String oldGender = table.getValueAt(table.getSelectedRow(), 3).toString();
System.out.println(oldFName); // prints correctly
System.out.println(oldLName); // prints correctly
System.out.println(oldGender); // prints correctly
AddUserDialog userDialog = null;
userDialog.setfName(oldFName); // Why is null here?!
userDialog.setlName(oldLName);
userDialog.setGender(oldGender);
userDialog = new AddUserDialog(this, userDialog.getfName(), userDialog.getlName(), userDialog.getGender());
} else JOptionPane.showMessageDialog(null, "Select A Row");
}
今 NullPointerException はここにあります:
userDialog.setfName(oldFName);
これをどのように解決しますか?