如何处理JPanel-jPanel1.dispose()或等效方法

You*_*mro 0 java user-interface swing

我们如何处置()JPanel?

我已经做完了jPanel1.removeAll(),现在我希望处理JPanel,以使其jPanelParent.getComponents()无法返回

Component[] components = this.jPanelParent.getComponents();  /// Returns 5 Components      
JPanel last = (JPanel)components[components.length];
last.removeAll();
//last.dispose()   NOT AVAILABLE
Run Code Online (Sandbox Code Playgroud)

现在在上面的代码之后,如果我运行.getComponents(),我不想在上面的代码中获得“最后一个”

arc*_*rcy 5

这是在错误的地方寻找答案的经典案例。您的问题以一种做事的方式为前提,而您又问该怎么做,即错误的操作和随之而来的混乱。“ dispose”是一个您根本不需要的操作所使用的术语,这无济于事,这与在程序员执行这些操作的环境中提供可回收的内存有关。

相信您要做的是删除父组件对JPanel的引用。这符合您的期望,即父面板中的getComponents()不返回您要摆脱的面板。

为了使要删除的面板可以执行此操作,它需要引用父面板,然后可以将其从父面板中删除,就像从目标面板中删除组件一样。实际上,如果父面板是唯一引用目标的位置,并且仅在目标中引用了目标的组件,则只需删除对目标的父面板引用,就不必删除目标组件。

因此,将对父面板的引用传递到目标面板,然后从假设的dispose()调用中将目标面板从父面板中移除()。

  • *“您的问题以做事的方式为前提,” *确实。这听起来像是经典的[XY问题](http://meta.stackexchange.com/q/66377/155831)。 (4认同)