JLayeredPane remove(int)方法不会抛出这样的子进程

时间:2014-05-20 10:29:53

标签: java swing jlayeredpane

我正在创建JLayeredPane(mainFrame)并像这样添加内容:

JPanel textP= new Scribe(text); //this returns panel with xome text
textP.setVisible(true);
mainFrame.add(shakespeare, new Integer(6));/*This is important!!!*/
mainFrame.repaint();
mainFrame.validate();

后来我试图像这样删除它

mainFrame.remove(6);

并抛出No such child: 6。 绘制图像的其他元素工作正常:

JPanel imageP = new ImagePanel(image);
imageP.setVisible(true);
mainFrame.add(imageP, new Integer(5));
mainFrame.repaint();
mainFrame.validate();
//after a while
mainFrame.remove(5);

这些面板是从窗格中放置和移除的,具有由用户输入定义的不同顺序和时间。

1 个答案:

答案 0 :(得分:3)

remove(int)从容器中删除第n个组件,它与组件添加到的层无关

最好的方法是尝试通过引用删除组件,因为在您添加组件之前,并不总是可以知道组件之前没有添加/插入任何内容