我正在为我的 Swing 组件创建动作,但是,它们通常需要生成确认 JDialog。我应该在 Action 本身内创建这个 JDialog,我应该将它传递给 Action,还是有替代方法?
例子
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
}
}