【问题标题】:Java Swing - Problem in disabling JCheckboxJava Swing - 禁用 JCheckbox 时出现问题
【发布时间】:2010-04-27 01:12:37
【问题描述】:

我正在禁用JCheckbox,然后在setEnabled(...) 方法的帮助下启用它。

但问题是,如果我禁用一个未选中的复选框,那么在我启用它之后它就会被选中。

我希望它们在启用后都具有与禁用前相同的状态。

【问题讨论】:

  • 你能发布一些代码来演示这个问题吗?
  • 双向 bean 数据绑定可以抓住你。我有同样的问题,只是我的 bean 绑定。

标签: java swing checkbox jcheckbox


【解决方案1】:

您是否使用 ActionListener 启用/禁用 JCheckBox?如果是这样,那是正常的,因为当您单击复选框时,isSelected() 状态会发生变化。

您可以做的是使用 isSelected() 和 setSelected() 方法添加检查。

【讨论】:

  • 我没有得到你的答案。无论如何,我正在通过“开始”按钮的 xxxxActionPerformed() 方法禁用/启用复选框。
  • styx777 试图说你应该在调用setEnabled() 之后调用setSelected() 方法。所以你可以选择你想要的组件。
【解决方案2】:

以下代码如您所描述的那样工作:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CheckboxTest implements ActionListener{
    private JCheckBox checkbox = new JCheckBox();
    private JButton btn = new JButton("Enable");
    public CheckboxTest(){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);      
        checkbox.setEnabled(false);
        btn.addActionListener(this);
        panel.add(checkbox);
        panel.add(btn);
        frame.setSize(400, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
    }

    public static void main(String[] args){
        new CheckboxTest();
    }

    public void actionPerformed(ActionEvent e) {
        checkbox.setEnabled(!checkbox.isEnabled());
        btn.setText(checkbox.isEnabled()?"Disable":"Enable");       
    } 
}

【讨论】:

    【解决方案3】:

    如果您调用setEnabled,则不会影响所选状态。如果是,那么我建议你重新检查你的代码,看看是否有任何东西可以解释这种行为。正如其他人所建议的那样,也许如果您发布一个可能有用的代码示例。

    更新: 为了清楚起见,只有两种方法可以更改复选框的选中状态。

    1. 致电setSelected
    2. 用户点击复选框

    setEnabled 的调用不会更改选定状态。 因此,您的代码中一定有一些奇怪的东西导致了这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      相关资源
      最近更新 更多