1

如何在禁用三个按钮和启用一个按钮的情况下启动一个程序(具有四个按钮)。此外,当按下启用的按钮时,我希望它被禁用,而其他三个被启用。忽略添加和删除方法,但这是我到目前为止所拥有的,我应该添加和/或更改什么?

private void initButtonActionPerformed(java.awt.event.ActionEvent evt) 
{
initButton.setEnabled(false);
}

private void displayButtonActionPerformed(java.awt.event.ActionEvent evt) 
{

}

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) 
{
cdcollection.add(cdtitleInput.getText());
}

private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) 
{
cdcollection.remove(cdcollection.size()-1);
}
4

4 回答 4

2

我错过了什么吗?您不能setEnabled()在创建按钮时直接调用它们吗?

要再次更改侦听器中的状态,只需调用setEnabled()相关按钮即可。

也许您应该查看单选按钮-听起来这就是您要模仿的...

于 2012-05-22T00:16:59.737 回答
1

您可以使用该方法编写您正在寻找的逻辑setEnabled():如果您传递它,false它将禁用您调用该方法的按钮,true启用它。所以可以设置三个禁用。然后您可以在按钮上注册一个按钮单击侦听器并将相反的逻辑添加到该处理程序。

于 2012-05-22T00:17:28.323 回答
1

您可以在 JButtons 上使用ActionListener

JButton button = new JButton();
button.setEnabled(true);
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
        button.setEnabled(false);
    }
}
于 2012-05-22T00:18:05.037 回答
1

执行此操作的快速书面基本示例:

   private void initComponents() {

        controls = new Container();
        controls = getContentPane();
        controls.setLayout(new FlowLayout());

        one = new JButton("Enable buttons");

        two = new JButton("Second");
        two.setEnabled(false);

        three = new JButton("Third");
        three.setEnabled(false);

        four = new JButton("Fourth");
        four.setEnabled(false);

        one.addActionListener(
                new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {

                    one.setEnabled(false);

                    if (!one.isEnabled()) {
                        two.setEnabled(true);
                        three.setEnabled(true);
                        four.setEnabled(true);
                    } 
                }
        });

        controls.add(one);
        controls.add(two);
        controls.add(three);
        controls.add(four);
    } 
于 2012-05-22T00:29:28.950 回答