如何从gridbagelement中删除元素?http://i.stack.imgur.com/1bsdw.jpg我想通过单击按钮删除所选项目。如何将所选项目的名称作为参数发送到操作按钮?
wpx232ag1#
您需要在按钮、其他控件和视图之间建立某种契约。想要修改视图的东西应该不能做任何你不想做的事情(比如改变布局)。我建议创建一个简单的界面,提供对您希望外部控件可以访问的操作(如添加、编辑、删除)的访问。这将传递给控件,通过限制控件可以实际执行的操作,并且不向它们公开不必要的功能(您不需要其中一个来删除主面板;)。当您想删除一个选定的任务时,您可以单击相应的按钮,它会调用模型上相应的“remove”方法。然后,您将找到所选的项(我假设您要么维护对它的引用,要么有一些方法可以找到它),并将其从父容器中移除。
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);
2条答案
按热度按时间wpx232ag1#
您需要在按钮、其他控件和视图之间建立某种契约。
想要修改视图的东西应该不能做任何你不想做的事情(比如改变布局)。
我建议创建一个简单的界面,提供对您希望外部控件可以访问的操作(如添加、编辑、删除)的访问。这将传递给控件,通过限制控件可以实际执行的操作,并且不向它们公开不必要的功能(您不需要其中一个来删除主面板;)。
当您想删除一个选定的任务时,您可以单击相应的按钮,它会调用模型上相应的“remove”方法。
然后,您将找到所选的项(我假设您要么维护对它的引用,要么有一些方法可以找到它),并将其从父容器中移除。
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是绿色面板。那块板可以拆下来。
一个简单的示例片段: