У меня есть два класса: сначала мой основной класс и второй класс в моем классе рамки редактирования.Инициализировать переменную с помощью конструктора
public class RecordTableGUI extends JFrame implements ActionListener {
String newName;
public RecordTableGUI(String newReceivedName) {
newName = newReceivedName;
System.out.println("new name in new constructor : " + newName); //prints new name correctly
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == editButton) {
Object oldName = table.getValueAt(table.getSelectedRow(), 1);
System.out.println("old name: " + oldName); // prints old name correctly
this.setVisible(false);
new UpdateGUI(String.valueOf(oldName));
System.out.println("new name in problem area: " + newName); // why null?
}
}
}
Мой второй класс (UpdateGUI) дает Старое_имя в это конструктор и после редактирования его, когда я нажимаю на okButton
, это отправить NEWNAME к моему первому классу.
Мой второй класс:
public class UpdateGUI extends JFrame implements ActionListener {
String oldName, newName;
public UpdateGUI(String oldname) {
oldName = oldname;
....
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
newName = tf.getText(); //tf is JTextfield
new RecordTableGUI(newName);
this.setVisible(false);
}
}
Моя проблема заключается в том, что почему NEWNAME равна нулю?
Update:
public class RecordTableGUI extends JFrame implements ActionListener {
public RecordTableGUI(String newReceivedName) {
setNewName(newReceivedName);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == editButton) {
Object oldName = table.getValueAt(table.getSelectedRow(), 1);
System.out.println("old name: " + oldName);
RecordTableGUI recordObject = new RecordTableGUI();
UpdateGUIDialog updDialog = new UpdateGUIDialog(String.valueOf(oldName), recordObject);
}
}
UpdateGUIDialog Класс:
public class UpdateGUIDialog extends JDialog implements ActionListener {
RecordTableGUI recordtablegui;
public UpdateGUIDialog(String old, RecordTableGUI recordGUI) {
oldName = old;
recordtablegui = recordGUI;
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
newName = tf.getText();
recordtablegui.setNewName(newName);
this.dispose();
}
}
}
Выход:
old name:james //prints correctly
new name: null //prints null
new name in set method: rrr //prints correctly
Мне нужно напечатать rrr
вместо нуль.
сообщение соответствующий код вашего второго класса. И уважайте соглашения об именах Java. Классы начинаются с буквы верхнего регистра. –
@JBNizet Добавить второй класс – Sajad
@JBNizet Я думаю, что моему конструктору второго класса тоже нужно подождать, пока действие 'okButton' не будет начато' newName' – Sajad