繁体   English   中英

JPanel removeAll没有摆脱以前的组件

[英]JPanel removeAll doesn't get rid of previous components

我有一个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();
}

如何让cdPanel完全重绘?

你可以试试:

cdPanel.revalidate();
cdPanel.repaint();   // This is required in some cases

代替

cdPanel.validate();

当你在处理不可预测的等待时间,使用SwingWorker做装载的背景下,如图所示这里 该示例使用pack()将标签调整到的图像,但你可能需要使用一个固定大小的网格和缩放图像,如图所示这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM