2016-12-27 62 views
1

我用setHidden(true),它不起作用。如果使用setHidden而不是setVisible,則容器及其組件是可見的。此外,我在使用setVisible時遇到的問題是,容器內的組件從頂層開始動畫後,容器的背景會彈出。我怎樣才能使容器的背景隨其組件一起移動。setHidden不起作用codenameone

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); 
} 

回答

0

試試f.invalidate();以及。 對我而言,有時候無效和重新驗證的結合起作用。

+0

不,它不工作。 dialogContainer的所有組件都從上到下滑動,但dialogContainer的bg Img剛好出現,不會從頂部移動到其特定位置以及其組件。我認爲它是由使用setVisible引起的,不是嗎? – beck

+1

set hidden將首選大小設置爲0,因此它需要animateLayout(在組件父級上)或revalidate()才能工作。在你的情況下,你明確地設置首選大小忽略棄用警告... –

+0

hello shai ..是的,這是原因。但爲什麼不把bg圖像設置爲從頂部作爲內部組件的dialogContainer動畫。 bg圖像jst在所有動畫發生後最後出現。 – beck