2010-05-28 34 views
1

我是Java Swing的新手,我正在创建一个窗口,显示从用户可以操作的XML文件中检索的项目列表。 窗口应该有一个按钮实现的取消和保存功能。虽然保存功能很简单(只需关闭窗口),但我不知道如何实现取消功能。是否存在“撤消”功能?有谁知道如何?取消Java Swing输入窗口中的更改

+2

你已经得到了所有的后字:-)。保存功能应该接受用户所做的编辑,并尝试将它们保存回模型。取消功能应该什么都不做。通常情况下,您可以通过让模型专门充当视图的委托来执行此操作,或者可以复制值对象并仅保存到该值对象上。 – 2010-05-28 14:56:10

回答

1

这取决于您是否有模态窗口/对话框 对于模式/对话框窗口,您应该问相反方向: 首先存储您在用户单击保存/确定时存储的值。

的模式窗口,您能不能把你的数据的副本,多数民众赞成在你的窗口的窗口编辑并保存,当用户点击保存,什么也不做,当用户点击取消

1

难道你不能做一个遍历所有字段的循环;将字段中的所有值更改为null以取消,然后关闭窗口?

+1

也许你可以创建一个布尔值,这取决于用户是否按下取消或保存而改变。所以你的代码的后端部分确切地知道你刚刚按下了哪个按钮。 – Bilzac 2010-05-28 14:57:49

+0

@Bilzac +1用于从用户界面分离业务逻辑 – corsiKa 2010-05-28 15:01:00

+0

@glowcoder:实际上,它们将两者更紧密地结合在一起。 “取消或保存”本质上是一个GUI概念;通过将其引入业务逻辑中,将它与GUI耦合在一起。例如,从命令行执行相同操作的命令将不具有保存/取消的概念。 – 2010-05-28 15:04:13

1

如果它即将恢复内部(已更改)数据结构以供后续处理,您可以在编辑之前复制数据,或者重新读取XML文件。 如果您不再需要数据,则只需取消任何操作(但关闭窗口)。