我在代码名为One的应用程序中无法使UI正常工作.我将其提炼为加载ParentContainer的"starter应用程序".

ParentContainer有一个按钮,用于更新子容器.它实际上只是在您单击按钮时删除和添加标签.

THE PROBLEM: The ChildContainer doesn't seem to want to render the label? Its empty. If I force a hard refresh in the Simulator by ROTATING THE DEVICE then it renders the label one time. I also checked the Codename One desktop application build and see the same problem. For the Desktop Build I can resize the main window and it will render the label.

没有任何程序可以让它显示出来.invalidate()/repaint()/callSerially()

即使在我将其显示出来之后,如果我再次按下ParentContainer按钮,它也会消失.我做错了什么?任何帮助都将不胜感激.

public class BugTestApp extends Lifecycle {

    @Override
    public void runApp() {
        Form hi = new Form("Hi World");
        hi.setLayout(new BorderLayout());

        ParentContainer container = new ParentContainer();
        container.init();

        hi.add(BorderLayout.CENTER, container);
        hi.show();
    }
}
public class ParentContainer extends Container {
    ChildContainer childContainer=null;
    
    public void init() {
        
        this.setLayout(new BorderLayout());
        Button btnFilterCategory = new Button("CLICK ME TO ACTIVATE");
        btnFilterCategory.addActionListener(e-> {
            childContainer.reloadAll();
        });
        this.add(BorderLayout.NORTH,btnFilterCategory);

        childContainer = new ChildContainer();
        childContainer.initComponents();
        this.add(BorderLayout.CENTER, childContainer);
    }
}
public class ChildContainer extends Container {

    public void initComponents() {
        setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        reloadAll();
    }

    public void reloadAll() {
        this.removeAll();
        this.add(new Label("This is a label."));
        this.repaint();
    }
}

推荐答案

repaint()在这里不是正确的方法.您需要使用的是revalidate()animateLayout(int)等.

repaint()在不调整尺寸/布局的情况下重新绘制组件.新组件的大小为零.如果将组件添加到已经显示的Form中,则需要显式布局组件.旋转将隐式触发窗体的重新显示.

Java相关问答推荐

通过推送通知向自己发送Matrix消息

计算战舰沉船/船只的问题(Java)

无法运行Java(已解决)

在现代操作系统/硬件上按块访问数据值得吗?

从Spring5迁移到Spring6:无法在雅加达包中找到类

如何修复PDF重建过程中的文本定位

Spring @Value default无法计算表达式

Java中将文本拆分为数字或十进制数字和字符串

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

无法使用Freemarker从XML中读取重复的标记值

如何在列表(链表)中插入一个新 node (作为prelast)

Java组件项目中的JavaFX对话框国际化

深度优先搜索实现:算法只向右搜索

有没有办法知道在合并中执行了什么操作?

在应用程序运行时更改LookAndFeel

用于Java的Visual Studio代码完成不起作用

谷歌应用引擎本地服务器赢得';t在eclipse上运行

如何判断元素计数并在流的中间抛出异常?

JavaFX中ListView中的问题