我正在使用 Container.getComponents() 获取存储在容器内的组件数组。然后,我正在修改这些组件之一(恰好是 JLabel),但更改未显示在 GUI 上。
所以我在想,也许该方法会为每个组件创建新实例,从而阻止我对原始组件进行更改?
这是我的代码:
Component[] components = source.getComponents();
if(components.length >= 2) {
if(components[1] instanceof JLabel) {
JLabel htmlArea = (JLabel) components[1];
htmlArea.setText("<html>new changes here</html>");
htmlArea.revalidate();
}
}
最佳答案
这要么是代码之外的另一个问题,要么是您从错误的线程执行此操作。
对 Swing 组件的任何更改都应该在事件分发线程中完成。通常最容易用 EventQueue.invokeLater(...)
(或 SwingUtilities.invokeLater
,这是一样的)包围变化的代码。
并确保您的组件在屏幕上确实可见。
关于java - Container.getComponents() 是否返回对原始组件的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371349/