从GridBagLayout中删除元素

时间:2013-06-05 22:34:46

标签: java swing applet japplet

如何从GridBagElement中删除元素? http://i.stack.imgur.com/1BsDW.jpg

enter image description here 我想通过单击按钮删除所选项目。 如何将所选项目的名称作为参数发送到操作按钮?

2 个答案:

答案 0 :(得分:1)

首先,不要从GridBagLayout中删除。使用swing,可以将Components添加到Container,然后从Container中删除它们。 http://docs.oracle.com/javase/6/docs/api/java/awt/Container.html#remove%28java.awt.Component%29

要选择绿色面板,您可以为此面板注册ActionListener或MouseListener。 MouseListener提供MouseEvent。 MouseEvent可以使用getSource获取Source,这是绿色Panel。 该面板可以删除。

一个简单的示例摘录:

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 :(得分:1)

您需要在按钮和其他控件以及视图之间建立某种契约。

想要修改视图的东西不应该做任何你不想要的事情(例如改变布局)。

我建议创建一个简单的界面,该界面提供对外部控件可以访问的操作的访问(如添加,编辑,删除)。这会传递给你的控件,通过限制控件实际可以做什么,而不是向它们公开不必要的功能(你不会有其中一个删除你的主面板;)。

如果要删除所选任务,请单击相应的按钮,它会在模型​​上调用相应的“删除”方法。

然后,您的实现将找到所选项目(我假设您要么维护引用或有一些方法可以查找),只需将其从父容器中删除即可。