Java swing:删除重量级jogl组件以在同一位置添加轻量级组件时的剩余

jum*_*mar 4 java swing jogl

在我的swing应用程序中,当我从主要组件中移除jogl GLCanvas以在同一位置添加jPanel时,会出现一些显示故障:在旧组件被删除之前和添加新组件之前,剩下的就是剩余的之前在GLCanvas顶部显示的所有弹出菜单的图像在主要组件的背景上可见.

我怎么能避免这个?

cam*_*ckr 5

从可见的GUI添加/删除组件时,代码应如下所示:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
Run Code Online (Sandbox Code Playgroud)

此外,代码应在Event Dispatch Thread上执行.如果代码是从侦听器中执行的,那么它就在EDT上.如果代码在侦听器之外执行,那么您可能需要使用SwingWorker或SwingUtilities.invokeLater().