2015-05-28 70 views
1

我的代碼是:在Java中禁用了一個JButton時將另一個JButton被按下

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);但我不知道如何在這種情況下使用它。

+0

您需要將按鈕的引用您要禁用 – MadProgrammer

+0

對不起按鈕我試圖禁用是「圓形」按鈕,當按下「機器」按鈕時 – mgrantnz

回答

1

您需要將您嘗試禁用按鈕的引用,這將需要你改變你的代碼咯...

首先,您需要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(); 
    } 
}); 

然後你可以從你的訪問10 ...

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

現在,如果你使用的是Java 6(我認爲Java 7),它會抱怨按鈕應final,但是這不會工作,根據你的方式您的代碼已設置。相反,你將需要circlemachine實例字段,以便能夠從ActionListener範圍內訪問它們