2014-09-12 40 views
1

我正在尝试创建一个窗口,然后使用pack方法获得正确的大小,但是窗口最大化。这里是我的代码:Libgdx“包”,不工作,我可能做错了什么?

private Table buildOptionsWindowLayer() { 
    winOptions = new Window("Options", skinLibgdx); 
    // (...) building some widgets 

    Gdx.app.log(TAG, "pref width is " + winOptions.getPrefWidth()); 
    // displays: "pref width is 247.0" 

    winOptions.pack(); 

    // move the window 
    winOptions.setPosition(Constants.VIEWPORT_GUI_HEIGHT - winOptions.getWidth() - 50, 50); 
    return winOptions; 
} 

窗口最终宽度为800.0f。为什么?

什么是应该呈现: enter image description here

它呈现什么: enter image description here

回答

0

给这个pack() documentation读。我相信你的.pack是这里的问题,因为它在你之前调用超类的构造函数。

+0

感谢您的回答,抱歉,我不认为我理解,现在我在Screen对象的show方法上调用此方法。我应该在哪里打电话? – igrossiter 2014-09-12 13:51:16

0

我知道这是一个古老的线程,但我碰到了同样的问题。您可以将包装和位置调用移动到onOptionsClicked方法,以便在显示窗口后调用它们。

private void onOptionsClicked() 
{ 
    loadSettings(); 
    btnMenuPlay.setVisible(false); 
    btnMenuOptions.setVisible(false); 
    winOptions.setVisible(true); 

    winOptions.pack(); 
    winOptions.setPosition(Constants.VIEWPORT_GUI_WIDTH - winOptions.getWidth() - 50, 50); 
} 
相关问题