【问题标题】:How to make a jButton change it's color when all the options are selected?选择所有选项后,如何使 jButton 更改其颜色?
【发布时间】:2012-06-19 21:21:43
【问题描述】:

大家好 :) 我希望我的JButton 在选择所有选项后更改其颜色,但我不知道如何...

我有一个ButtonGroup 用于 6 个单选按钮、6 个复选框和一个文本字段

当一个单选按钮被选中并且一个或多个复选框被选中并且文本字段中有一个数字(或任何东西)时,JButton 将其颜色更改为绿色。我不知道在哪里放置动作监听器或如何开始,所以如果有人能帮助我,我将非常感激。

好的,您可以按照您的要求找到here 一些代码,但我认为这无关紧要。本质上,这是我之前问题的延续。

【问题讨论】:

  • 你应该展示一些代码来说明你已经放在一起的东西。否则,您实际上是在要求某人编写您的表单处理程序。
  • 您将 ActionListener 添加到需要选择以使 JButton 处于活动状态的所有内容中。监听器会检查所有需要选择的东西是否都被选中。我建议不要设置充满外观问题的 JButton 的背景颜色,而是通过 setEnabled(boolean enabled) 方法更改 JButton 的启用状态。
  • +1 表示@HovercraftFullOfEels 的setEnabled 建议

标签: java swing colors jbutton


【解决方案1】:

如果您只是有一个方法可以根据按钮的状态和文本字段调整按钮的颜色,例如

public void updateButtonColor(){
  if ( isAtLeastOneRadioButtonSelected() && isAtLeastOneCheckBoxSelected() && 
       textFieldContainsNumber() ){
      changeButtonColor( Color.green );
   } else {
      changeButtonColor( Color.red );
   }
}

您可以向每个单选按钮、复选框和文本字段添加侦听器,以便在组件的相关状态发生变化时调用 updateButtonColor 方法(例如,将 ItemListener 更改为 JCheckBox 以检测选择的变化)

【讨论】:

  • @AlejandraUzelac Swing button tutorial 提供了如何将监听器附加到这些监听器的示例,然后这些监听器可以调用该方法
  • 我已将 isAtLeastOneRadioButtonSelected (isRadioSelected) 等作为布尔值,对于单选按钮,我已放置 ItemStateChanged 事件:if (jRadioButton1.isSelected()) { isRadioSelected=true; updateButtonColor(); } 对于复选框和 ItemStateChanged 事件以及代码:if (checkbox1.getState()==true) { isChecked=true; updateButtonColor(); } 我收到一个错误,但它仍然有效,但我不知道如何检查 jTextBox 中是否有文本...我应该使用哪个事件?
  • @AlejandraUzelac DocumentListeners 是在文本字段中输入/删除/...时更新的内容
  • 我正在使用 NetBeans,但没有 DocumentListener - s15.postimage.org/i7vd48pcr/Untitled.png
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 2013-07-15
  • 2022-01-18
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2013-03-23
  • 2011-07-02
相关资源
最近更新 更多