我正在尝试实现一些我认为应该很容易实现的功能,但是我无法使其正常运行。我有一个Jframe,其中包含2个JPanel。我想在其中一个单击的JPanel中具有一个按钮,该按钮将从JFrame中删除该JPanel。(我现在正在做概念验证,将来会有更多的JPanel)。buttonRemove.addActionListener( (e) -> { buttonRemove.getParent().getParent().remove(buttonRemove.getParent());});是我的ActionListener,它使程序挂起。我在这里理解错了什么?做我想做的最佳实践是什么?编辑:FractalBuilder extends JFrame{ public JPanel image; public JPanel fonction; public FractalBuilder(){ setLayout( new BorderLayout() ); fonction = new JPanel(); JButton buttonRemove = new JButton(Remove); buttonRemove.addActionListener( (e) -> { buttonRemove.getParent().getParent().remove(buttonRemove.getParent()); }); fonction.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints; fonction.add(buttonRemove, gbc); add(fonction, BORDER_LAYOUT.WEST); add(image, BORDER_LAYOUT.EAST);}我添加了我认为可能相关的代码,但是如果需要的话,将为完整的源代码添加github链接。
1 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
从可见的GUI面板添加/删除组件时,基本逻辑是:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
您需要revalidate()来调用布局管理器,并需要repaint()来确保所有组件都使用新的布局重新绘制。
添加回答
举报
0/150
提交
取消