2013-06-05 192 views

回答

1

首先,您不要從GridBagLayout中刪除。使用swing可以將組件添加到容器,然後將其從容器中移除。 http://docs.oracle.com/javase/6/docs/api/java/awt/Container.html#remove%28java.awt.Component%29

要選擇綠色面板,您可以爲此面板註冊一個ActionListener或MouseListener。 MouseListener提供MouseEvent。 MouseEvent可以通過getSource爲您提供源代碼,這是綠色面板。 並且該面板可以被移除。

一個簡單的例子片斷:

final JPanel mainPanel = new JPanel(); 
JPanel greenPanel = new JPanel(); 
greenPanel.addActionListener(new ActionListener(){ 
    @Override 
    public void ActionPerformed(ActionEvent e){ 
    int answer = JOptionPane.showConfirmDialog(null, "Delete?"); 
    if(answer == JOptionPane.YES_OPTION){ 
     mainPanel.remove(e.getSource()); 
    } 
    } 
}); 
mainPanel.add(greenPanel); 
1

您將要建立某種東西像按鈕和其他控制和視圖之間的合同。

想要修改視圖的事物不應該能夠做任何你不想讓它們的事情(比如改變佈局)。

我建議創建一個簡單的界面,它提供了訪問您希望外部控件有權訪問的操作(如添加,編輯,刪除)。這可以傳遞給你的控件,通過限制控件實際上可以做的事情,而不是向他們展示不必要的功能(你不會讓他們之一移除你的主面板;))。

當你想刪除一個選定的任務,你點擊相應的按鈕,它會在你的模型上調用適當的「刪除」方法。

然後,您的實現將找到選定的項目(我假設您保持引用或有一些手段來查找),並將其從它的父容器中刪除。