在Swing中实现拒绝用户更改值的最佳方法?

Mic*_*rdt 5 java user-interface swing

JCheckBox当某个其他字段为空时,我不应该检查用户.

所以现在我想有一个错误弹出,然后重置该复选框(我已经考虑禁用该复选框,但对于另一场的连接并不明显,和工具提示文本IMO不够可见).

在Swing中这样做的正确方法是什么?通过一个PropertyVetoException?我在哪里扔它,我在哪里抓到它?我的第一个(可能是丑陋的)想法是添加一个ChangeListener本身显示弹出窗口并重置值.

编辑:问题是关于Nikki(下面的截图),我正在开发的一个应用程序地理标记图像并将其导出到谷歌地球的KMZ格式.该复选框用于选择要包含在导出中的图像.但这需要首先获取图像(这又需要时间戳或手动分配).我不认为这个要求可以通过UI布局显而易见.

替代文字http://www.brazzy.de/nikki/screenshot_nikki.png

Gui*_*ume 2

我只需禁用该复选框并添加一条消息来解释该选项不可用的原因。显示消息的一个好方法是在复选框旁边显示一个迷你感叹号,并将消息放在工具提示中。

弹出异常通常会让人感觉不对劲,因为用户不会阅读错误消息。对于大多数用户来说,弹出错误消息意味着应用程序执行了错误,在您的情况下,这是正常行为。

如果您坚持启用该复选框,请进行编辑,向用户显示某些信息丢失的另一种方法是闪烁丢失的数据。例如。如果缺少纬度和经度并且用户单击“导出”,请在这些字段上设置红色背景一秒钟。这将清楚地向用户显示缺少什么。

在这个屏幕中,您不想将鼠标放在红色圆圈上以了解发生了什么吗?

验证http://www.vogella.de/articles/EclipseDataBinding/images/validation10.gif