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

标签 java user-interface swing

我有一个 JCheckBox,当某个其他字段为空时,用户不应检查它。

所以现在我想要一个错误弹出窗口,然后重置复选框(我考虑过禁用该复选框,但与其他字段的连接不明显,并且工具提示文本 IMO 不够可见)。

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

编辑: 问题是关于 Nikki (下面的屏幕截图),我正在开发的一个应用程序,它可以对图像进行地理标记并将它们导出为 Google Earth 的 KMZ 格式。该复选框用于选择要包含在导出中的图像。但这需要首先对图像进行标记(这又需要时间戳或手动分配)。我不认为这个需求可以通过 UI 布局变得明显。

alt text
(来源: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/

相关文章:

java - 字符串解耦和字段名称

java - Java Swing 中类似文本的 JPanel 换行

java - 自定义 Eclipse 格式

java - hibernate 事务和 sql 查询与条件查询

javascript - React 中孙子元素的箭头语法和绑定(bind)问题

c++ - Qt:创建半透明禁用图标状态

ios - 获取所有已加载的 uiviewcontroller

java - JList 渲染前/渲染后 Hook ?

java - 故障排除: JDialog which is modal and yet not modal?

java - 多次修改放入另一个类的构造函数参数中的对象