【发布时间】:2017-03-04 02:37:15
【问题描述】:
@FXML
private void handleDeleteAction(ActionEvent event) {
for (Transaction transaction : transactionsTable.getSelectionModel().getSelectedItems()) {
RemoveTransactionsCommand removeTransactionsCommand = new RemoveTransactionsCommand(transaction, transactionsTable.getSelectionModel().getSelectedItems(), data);
commandRegistry.executeCommand(removeTransactionsCommand);
}
}
为什么在我选择多行的情况下它不起作用,我的意思是它删除一行(有时是两行,但找不到决定它的原因)
这里是命令实现:
public class RemoveTransactionsCommand implements Command {
private ObservableList<Transaction> selectedItems;
private Transaction transactionToRemove;
private Account account;
public RemoveTransactionsCommand(Transaction transactionToRemove, ObservableList<Transaction> selectedItems, Account account) {
this.account = account;
this.transactionToRemove = transactionToRemove;
this.selectedItems = selectedItems;
}
@Override
public String getName() {
int presentSize = selectedItems.size();
return presentSize + "transaction/s removed";
}
@Override
public void execute() {
account.removeTransaction(transactionToRemove);
}
}
及移除命令:
public void removeTransaction(Transaction transaction) {
this.transactions.remove(transaction);
}
此外,我想知道实际删除操作的大小,但我作为第二个参数传递的不是静态的,例如,当每一行被删除时,它将为 0。
任何建议如何改进它? 完整项目可以找到here
【问题讨论】: