当某个其他字段为空时,用户不应检查JCheckBox
。
所以现在我想要弹出一个错误,然后重置复选框(我考虑禁用复选框,但是与其他字段的连接不明显,并且工具提示文本IMO不够明显)。
在Swing中这样做的正确方法是什么?通过PropertyVetoException
?我在哪里扔它,我在哪里抓到它?我的第一个(可能是丑陋的)想法是添加一个ChangeListener
,它自己显示弹出窗口并重置值。
编辑:问题是关于Nikki(下面的屏幕截图),我正在开发的应用程序,用于对图像进行地理标记并将其导出为Google地球的KMZ格式。该复选框用于选择要包含在导出中的图像。但这需要首先获取图像(这又需要时间戳或手动分配)。我不认为通过UI布局可以明白这个要求。
答案 0 :(得分:2)
我只是禁用复选框并添加一条消息,说明该选项无法使用的原因。显示消息的一种好方法是在复选框旁边显示一个迷你感叹号,并将消息放在工具提示中。
弹出异常通常会感觉不对,因为users don't read error messages。对于大多数用户而言,弹出错误消息意味着应用程序执行了错误操作,在您的情况下,这是正常行为。
编辑如果您坚持让复选框启用,另一种向用户显示缺少某些信息的方法是刷新丢失的数据。例如。如果缺少纬度和经度且用户点击导出,请在这些字段上设置红色背景一秒钟。这将清楚地向用户显示缺少的内容。
在此屏幕中,您不想将鼠标放在红色圆圈上以了解正在发生的事情吗?
validation http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif
答案 1 :(得分:1)
我认为根本不应该禁用导出JCheckBox
。相反,导出JButton
本身应检查当前导出列表,并以允许导航到所选照片的方式显示任何异常条目。如果所有条目都正确,则导出将照常进行。
附录:它认为您将接口保持为非模态是正确的。我的模型是在退出编辑器时未保存的文件或在IDE中关闭项目时未提交的更改。
如果这是窗口底部的状态行,您可以指出当前选择导出的照片数量,如果还需要地理编码则添加计数。
答案 2 :(得分:0)
应该允许该字段禁用该复选框。如果耦合不直观,则可能必须重新考虑GUI布局。
我建议您创建一个单独的列,其中包含每个图像的复选框,并且禁用该复选框,直到图像通过验证(步骤3)。也许在专栏中有一个解释性文字,说明图像尚未通过的原因。