我有一个 JCheckBox
,当某个其他字段为空时,用户不应检查它。
所以现在我想要一个错误弹出窗口,然后重置复选框(我考虑过禁用该复选框,但与其他字段的连接不明显,并且工具提示文本 IMO 不够可见)。
在 Swing 中正确的做法是什么?通过 PropertyVetoException
?我在哪里扔它,我在哪里接住它?我的第一个(可能是丑陋的)想法是添加一个 ChangeListener
,它本身显示弹出窗口并重置值。
编辑: 问题是关于 Nikki (下面的屏幕截图),我正在开发的一个应用程序,它可以对图像进行地理标记并将它们导出为 Google Earth 的 KMZ 格式。该复选框用于选择要包含在导出中的图像。但这需要首先对图像进行标记(这又需要时间戳或手动分配)。我不认为这个需求可以通过 UI 布局变得明显。
(来源:brazzy.de)
最佳答案
我会简单地禁用复选框并添加一条消息来解释为什么该选项不可用。显示消息的一种好方法是在复选框旁边显示一个迷你感叹号,并将消息放在工具提示中。
弹出异常常常让人感觉不对,因为users don't read error messages .对于大多数用户来说,错误消息弹出意味着应用程序做错了什么,在您的情况下这是正常行为。
编辑 如果您坚持让复选框处于启用状态,另一种向用户显示某些信息丢失的方法是闪现丢失的数据。例如。如果缺少纬度和经度并且用户单击导出,请在这些字段上设置红色背景一秒钟。这将清楚地向用户显示缺少的内容。
在这个画面中,你是不是想把鼠标放在红圈上,看看是怎么回事?
validation http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif
关于java - 在 Swing 中实现拒绝用户更改值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661343/