java - Container.getComponents() 是否返回对原始组件的引用?

标签 java user-interface swing

我正在使用 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/

相关文章:

java - 如何在 Swing 中获取 JWindow 的父容器?

java - 动态调整 JPanels 的大小以适应窗口的宽度

java - 如何在填充表时在jtable中设置图标?

java - 如何在打开新框架时关闭主框架

java - 定义命名空间时,使用 Maven 创建的架构验证 XML 失败

Java:运行多个 shell 命令?

c - 获取 char 和整数作为输入或仅获取 char 作为输入

java - 如何将 JTable 保存和加载为 .txt 文件

java - 在 java.lang.NoClassDefFoundError 上遇到问题

java - Swing UI 测试的持续集成