Swing コンポーネントのアクションを作成していますが、多くの場合、確認の JDialog を生成する必要があります。この JDialog をアクション自体の中で作成する必要がありますか、それをアクションに渡す必要がありますか、それとも別の方法がありますか?
例
public static class Create extends AbstractAction {
@Override
public void actionPerformed(ActionEvent event) {
int selection = JOptionPane.showConfirmDialog(...);
// ... processing
}
}
この例では、JDialog の選択を自動化する必要があるため (コードの匂いがします)、単体テストを行うのは非常に困難です。
解決?
public static class Create extends AbstractAction {
private JDialog dialog = null;
public Create(JDialog dialog) {
this.dialog = dialog;
}
@Override
public void actionPerformed(ActionEvent event) {
dialog.display();
// ... processing
}
}