【问题标题】:How to make button highlighted or pale in java swing properly?java - 如何正确使java swing中的按钮突出显示或变淡?
【发布时间】:2011-05-10 06:09:35
【问题描述】:

我正在使用带有默认 UI 的 Swing(没有任何特殊皮肤)。

如何使一些按钮/文本字段更亮或更苍白?这意味着用户应该/不应该(尽管没有完全禁用)按下按钮。

示例:用户更改了一个字段 - “保存”按钮变得更亮(例如,绿色)。状态是“编译失败”——“执行”按钮是苍白的(尽管用户仍然可以执行以前版本的东西)。用户填写了“密码”字段-他希望填写“密码确认”-所以它变亮了。

  • 我有:{正常、禁用、不可见}
  • 我想要:{明亮、正常、苍白、残疾、隐形}。

如何正确地制作它,而不用画东西,分离内容和表示?即使用户覆盖了系统中的颜色设置,我也希望它看起来很好。我应该使用其他工具包吗?

我希望我为给定控件设置提示,然后皮肤读取提示并应用其他外观和感觉选项(例如更亮的背景),而无需我处理具体的颜色。可能一个皮肤会使用其他背景,而其他一些皮肤会使用其他字体来实现此效果。与启用/禁用情况类似,但更灵活。

【问题讨论】:

  • 我知道setEnabled,但它只能让它变得苍白并禁用它。我想要“软禁用”+反之。

标签: java swing user-interface


【解决方案1】:

只需使用 setBackground() 更改颜色以匹配组件的状态。甚至可以创建一个自定义组件,该组件具有更改状态的方法,并且它知道哪种颜色与该状态匹配。

【讨论】:

  • 您可以提取组件的当前颜色并调用更亮的()或更暗的(),但是我认为您只需定义自己的 5 种颜色并将它们存储在常量中以供组件使用。
  • 如果用户将系统皮肤换成其他皮肤怎么办?我认为,好的应用程序不应该依赖于它的 UI 控件有什么颜色,除非它自己管理皮肤。
  • 然后指定特定的外观。我建议雨云。 (如果您要开始弄乱按钮的颜色,那么指定外观和感觉是有意义的。
  • 因此,在不完全控制外观和感觉的情况下,不可能拥有比“启用”和“禁用”更多的风格,对吧?我期望我为给定控件设置提示,然后皮肤读取提示并应用其他外观选项(例如更亮的背景)。与启用/禁用情况类似,但更灵活。
  • @Vi,你可以有更多的口味,它们可能看起来不正确。启用和禁用的区别在于每种外观都定义了这些状态的外观。其他外观不会专门支持任何新状态。
【解决方案2】:

我不确定我是否从您提供的示例中看到了您试图实现的目标的价值。如果您为用户提供与预期用户体验不同的功能,用户是否可能会对应用程序的工作方式感到困惑?

如果用户尚未更改字段,则可以完全禁用保存按钮。如果没有进行任何更改,那么能够保存的价值是什么。或者,如果你仍然执着于做出这种区分,你能用另一种方式来做吗?可能是一个可视队列、已更改字段旁边的图标、单元格突出显示或窗口名称文本末尾附加的 * 以表明窗口中有未保存的更改?

从纯粹的用户体验的角度来看,我认为你不想去搞乱人们期望应用程序的行为方式,除非你有一个真的充分的理由!

【讨论】:

  • 所以除了启用和禁用之外最好不要引入更多的状态? “建议”状态如何?表示用户应该按下此按钮,但在某些情况下不需要这样做。
  • 对于您的“建议”状态,您可以在选择的按钮旁边放置一个小图标,或修改按钮的边框。
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多