2015-11-14 41 views
0

我使用ArrayList將按鈕放入JFrame, 現在我想創建一個程序,通過按下特定的鍵來刪除JButton。使用KeyListner的方法刪除JButton接口

但是,當我按下該鍵時,該框架上的按鈕不會被刪除,但它確實來自arraylist。

要使上述功能可用,我應該更改我的幀代碼嗎? 這裏是我的框架部分

public class DataModel extends JFrame { 
    JPanel _panel = new JPanel(); 
    Tiles _tiles; 

    public DataModel(Tiles tiles) { 

     this._tiles = tiles; 

     setVisible(true); 
     _panel.setLayout(new GridLayout(4, 1)); 

     for (int i = 0; i < _tiles.size(); i++) { 
      _panel.add(_tiles.get(i)); 
     } 

     add(_panel); 
     pack(); 
    } 
} 
+1

考慮提供一個[可運行示例](https://stackoverflow.com/help/mcve)這表明您的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的迴應 – MadProgrammer

+0

這似乎更像是'JList'的情況.. –

回答

1

然而,當我按下鍵,框架上的按鈕沒有得到刪除代碼,但它從ArrayList中一樣。

添加/從可見GUI移除組件時的基本代碼是:

panel.remove(...); 
panel.revalidate(); // to invoke the layout manager 
panel.repaint(); // repaint components after layout manager has done its job 
+0

是否有任何特定的方法來刪除JPanel上的JButton? 我使用panel.remove(comp)方法,但不起作用。 – Javarian

+0

@Javarian如果你有一個適當的參考按鈕和麪板,那麼代碼將工作。發佈你的[SSCCE](http://sscce.org/)來證明問題。這是用一些按鈕創建一個框架。爲每個按鈕添加一個ActionListener來調用我建議的代碼。代碼應該工作。如果沒有,那麼你有簡單的代碼發佈的論壇。 – camickr

+0

我發現刪除方法的工作,但面板上的nbutton仍然存在.. – Javarian