首先在他的@Sage提意见一个的JPanel是不是该做动作的组件的容器。因此,您无法将ActionListener附加到
JPanel。
我认为我可以将代码复制和粘贴很多次到面板中的每个侦听器中,但这对我来说似乎是不好的编码习惯。
您对此完全正确,这根本不是一个好习惯(请参阅DRY原理)。取而代之的是,您可以只定义一个
ActionListener并将其附加到您的
JCheckBoxes上,如下所示:
final JCheckBox check1 = new JCheckBox("Check1");final JCheckBox check2 = new JCheckBox("Check2");final JCheckBox check3 = new JCheckBox("Check3");final JButton buttonToBeEnabled = new JButton("Submit");buttonToBeEnabled.setEnabled(false);ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean enable = check1.isSelected() && check3.isSelected(); buttonToBeEnabled.setEnabled(enable); }};check1.addActionListener(actionListener);check2.addActionListener(actionListener);check3.addActionListener(actionListener);这意味着:如果
check1和
check3都被选中,则必须启用该按钮,否则必须禁用。当然,只有您知道应该选择哪种复选框组合才能将按钮设置为启用。
看一下如何使用按钮,复选框和单选按钮教程。



