从gridbaglayout中删除元素

xpcnnkqh  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(360)

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

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

wpx232ag

wpx232ag1#

您需要在按钮、其他控件和视图之间建立某种契约。
想要修改视图的东西应该不能做任何你不想做的事情(比如改变布局)。
我建议创建一个简单的界面,提供对您希望外部控件可以访问的操作(如添加、编辑、删除)的访问。这将传递给控件,通过限制控件可以实际执行的操作,并且不向它们公开不必要的功能(您不需要其中一个来删除主面板;)。
当您想删除一个选定的任务时,您可以单击相应的按钮,它会调用模型上相应的“remove”方法。
然后,您将找到所选的项(我假设您要么维护对它的引用,要么有一些方法可以找到它),并将其从父容器中移除。

5anewei6

5anewei62#

首先,不要从gridbaglayout中删除。使用swing可以将组件添加到容器中,然后从容器中移除它们。http://docs.oracle.com/javase/6/docs/api/java/awt/container.html#remove%28java.awt.component组件%29
要选择绿色面板,可以为此面板注册actionlistener或mouselistener。鼠标听筒传递鼠标事件。mouseevent可以用getsource获取源代码,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);

相关问题