setHidden无法使用codenameone

setHidden无法使用codenameone,codenameone,Codenameone,我使用了setHidden(true),但它不起作用。如果使用setHidden而不是setVisible,则容器及其组件可见。此外,我在使用setVisible时遇到的问题是,在容器中的组件从顶部开始设置动画后,容器的背景会弹出。如何使容器的背景与其组件一起移动frm top questionAnswerContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS)); titleDialog = new Label("Yuppie!");

我使用了setHidden(true),但它不起作用。如果使用setHidden而不是setVisible,则容器及其组件可见。此外,我在使用setVisible时遇到的问题是,在容器中的组件从顶部开始设置动画后,容器的背景会弹出。如何使容器的背景与其组件一起移动frm top

questionAnswerContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));

titleDialog = new Label("Yuppie!");
titleDialog.setUIID("GameDialogLabelBold");
body1 = new Label("Let’s celebrate");
body2 = new Label("with another");
body3 = new Label("drink");
Button ok = new Button(theme.getImage("playIcon.png"));

dialogContainer = (BoxLayout.encloseY(titleDialog, body1, body2, body3, ok));
dialogContainer.getAllStyles().setBgImage(theme.getImage("yuppieDialog.png"));
dialogContainer.setPreferredW(screenWidth * 2 / 3);
dialogContainer.setPreferredH(screenWidth * 2 / 3);

add(BorderLayout.CENTER, LayeredLayout.encloseIn(questionAnswerContainer, FlowLayout.encloseCenterMiddle(dialogContainer)));
dialogContainer.getParent().setVisible(false);
//        dialogContainer.setHidden(true);  //it doesnot work, the container and its components are visible if setHidden is used instead of setVisible
f.revalidate();


public void checkIfCorrect(Button checkBtn, Form f) {
    dialogContainer.getParent().setY(-Display.getInstance().getDisplayHeight());
    dialogContainer.getParent().setVisible(true);
    //     dialogContainer.getParent().setHidden(false);
}

尝试
f.invalidate()也是。

对我来说,有时失效和重新验证的组合是有效的。

尝试一下
f.invalidate()也是。

对我来说,有时失效和重新验证的组合是有效的。

不,它不起作用。dialogContainer的所有组件都会从上到下滑动,但dialogContainer的bg Img只是出现,不会随组件一起从顶部移动到其特定位置。我认为这是由于使用setVisible造成的,不是吗?set hidden将首选大小设置为0,因此需要
animateLayout
(在组件父级上)或
revalidate()
才能工作。在您的情况下,您可以忽略弃用警告显式设置首选大小…hello shai。。是的,这就是原因。但是为什么设置到dialogContainer的bg图像不能从顶部作为内部组件进行动画制作呢。所有动画完成后,bg图像jst最终出现。不,它不工作。dialogContainer的所有组件都会从上到下滑动,但dialogContainer的bg Img只是出现,不会随组件一起从顶部移动到其特定位置。我认为这是由于使用setVisible造成的,不是吗?set hidden将首选大小设置为0,因此需要
animateLayout
(在组件父级上)或
revalidate()
才能工作。在您的情况下,您可以忽略弃用警告显式设置首选大小…hello shai。。是的,这就是原因。但是为什么设置到dialogContainer的bg图像不能从顶部作为内部组件进行动画制作呢。所有动画完成后,bg图像jst最终出现。