0
は、ここで[OK]を(ショート)私のGUIクラス
ActionListenerクラスから呼び出されたメソッドを追加しても、コレクションに要素が追加されないのはなぜですか? Javaの
public class GUI {
private DataContainer dataContainer;
public GUI(DataContainer dataContainer){
this.dataContainer = dataContainer;
initGUI();
}
class RegisterListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e){
String message;
String firstName = registerPanelFirstNameTextField.getText();
String lastName = registerPanelLastNameTextField.getText();
String login = registerPanelLoginTextField.getName();
String password = registerPanelPasswordTextField.getText();
String adress = registerPanelAdressTextField.getText();
Client client = new Client(firstName, lastName, login, password, adress);
boolean registerCheck = dataContainer.registerClient(client);
if (registerCheck) {
message = "SUCCES!";
} else {
message = "FAILURE!";
}
JOptionPane.showMessageDialog(new JFrame(), message);
}
}
だし、ここに(も短絡)私のデータコンテナクラスです
:
public class DataContainer implements Subject {
public boolean workingStatus = true;
private List<Client> clientList = new ArrayList<>();
private List<Auction> auctionList = new ArrayList<>();
private List<Observer> observersList = new ArrayList<>();
public boolean registerClient(Client client) {
String testLogin = client.getLogin();
boolean isClientOnList = isClientOnList(testLogin);
if (isClientOnList) {
return false;
} else {
addClientToList(client);
return true;
}
}
private void addClientToList(Client client) {
clientList.add(client);
System.out.println(clientList);
}
そして、ここで私の質問です - レジスタリスナーから呼び出されたメソッドは空のコレクションを与える理由。 SysOutは[null]
を出力します。私はJUnitとリフレクションを使って直接addClientToList()
をテストしていますが、それは動作しますが、ボタンをクリックしたときは単純に反映されません。そして、はい、私のクラスで私は新しいDataContainer
オブジェクトを作成し、それをGUIコンストラクタに渡しました。
あなたはデバッグましたか? 'isClientOnList'がfalseであると確信していますか? 'client'がnullでないことは確かですか? '[null]'は空のコレクションではなく、一つの要素が 'null'のコレクションです。これは実際のコードですか? [mcve] –
を提供してください。コードを短縮したのはいいことですが、それは完全性を犠牲にすることを意味するものではありません –