JPanel removeAll没有摆脱以前的组件

jay*_*bee 12 java swing jpanel

我有一个swing应用程序,我在JPanel中显示图像.如果应用程序无法生成图像,我想从JPanel中删除前一个图像,并将其替换为JTextField和消息.我可以添加文本字段,但它是在前面的内容之上绘制的,它本身就是JPanel的子类.这就是我所拥有的:

private void displayMessage(String message) {
  JTextField tf = new JTextField(message);
  cdPanel.removeAll();
  cdPanel.add(tf, BorderLayout.NORTH);//tried lots of variations, inc. no layout    
  cdPanel.validate();
}
Run Code Online (Sandbox Code Playgroud)

如何让cdPanel完全重绘?

nIc*_*cOw 26

你可以试试:

cdPanel.revalidate();
cdPanel.repaint();   // This is required in some cases
Run Code Online (Sandbox Code Playgroud)

代替

cdPanel.validate();
Run Code Online (Sandbox Code Playgroud)