簡體   English   中英

當按下另一個Jbutton時在Java中禁用Jbutton

[英]Disabling a Jbutton in java when another Jbutton is pressed

我的代碼是:

public FactoryWindow()
{
    getPreferredSize();
    setTitle("Bounce");
    JPanel buttonPanel = new JPanel();
    add(comp, BorderLayout.CENTER);
    addButton(buttonPanel, "Circle", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                comp.addShape();
            }
        });
    addButton(buttonPanel, "Machine", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                comp.addMachine();

            }
        });
    addButton(buttonPanel, "Close", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }
        });
    add(buttonPanel, BorderLayout.SOUTH);
    pack();
}

這是一個構造函數。 該類擴展了JFrame

public void addButton(Container c, String title, ActionListener listener)
{
   JButton button = new JButton(title);
   c.add(button);
   button.addActionListener(listener);
}

我希望能夠在按下機器按鈕時禁用“形狀”按鈕

我將如何去做?

我知道有類似buttonName.setEnabled(false);東西buttonName.setEnabled(false); 但我不知道如何在這種情況下使用它。

您將需要引用要禁用的按鈕,這將需要您稍微更改代碼。

首先,您需要使用addButton方法返回它創建的按鈕。

public JButton addButton(Container c, String title, ActionListener listener) {
    JButton button = new JButton(title);
    c.add(button);
    button.addActionListener(listener);
    return button;
}

然后,您需要將結果分配給變量...

JButton cirlce = null;
JButton machine = null;

cirlce = addButton(buttonPanel, "Circle", new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        comp.addShape();
    }
});

然后,您可以從ActionListener訪問它。

machine = addButton(buttonPanel, "Machine", new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        comp.addMachine();
        circle.setEnabled(false);
    }
});

現在,如果您使用的是Java 6(我認為是Java 7),它會抱怨該按鈕應該是final ,但根據您設置代碼的方式,該按鈕將不起作用。 相反,您將需要制作circlemachine實例字段,以便能夠從ActionListener上下文中訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM