【问题标题】:How do I display Button in Nifty GUI without XML?如何在没有 XML 的 Nifty GUI 中显示按钮?
【发布时间】:2015-10-20 14:37:50
【问题描述】:

我正在尝试为我的游戏制作 GUI。我尝试了各种库,最终得到了 Nifty。我没有找到任何有用的教程,因此我正在从代码示例中学习。

我想显示一个简单的Button,但我的代码似乎不起作用。我试过设置Panel 的背景颜色,它一直在工作。我不知道为什么 Button 没有显示。

这是我所拥有的:

protected void prepareNifty(Nifty nifty) {
    ScreenBuilder sb = new ScreenBuilder("start");
    LayerBuilder lb = new LayerBuilder();
    PanelBuilder pb = new PanelBuilder();

    pb.control(new ButtonBuilder("btn1", "First Button!"){{
        alignCenter();
        valignCenter();
        height("5%");
        width("15%");
        backgroundColor(Color.WHITE);
    }});

    pb.childLayoutCenter();
    lb.childLayoutVertical();
    lb.panel(pb);
    sb.layer(lb);

    nifty.addScreen("start", sb.build(nifty));
}

我应该补充一下,我正在使用 Slick2D,并且我的课程扩展了 NiftyBasicGame

如何显示Button 并设置绝对位置?

【问题讨论】:

    标签: java slick2d nifty-gui


    【解决方案1】:

    当您想使用默认控件(如 Button 控件)时,您还需要加载控件和样式。

    尝试类似:

    nifty.loadStyleFile("nifty-default-styles.xml");
    nifty.loadControlFile("nifty-default-controls.xml");
    
    new ScreenBuilder("start") {{
      layer(new LayerBuilder("background") {{
        backgroundColor("#f008");
        childLayoutAbsolute();
        control(new ButtonBuilder("showPopupButton", "SHOW") {{
          x(SizeValue.px(100));
          y(SizeValue.px(100));
          interactOnClick("showPopup()");
        }});
      }});
    }}.build(nifty);
    nifty.gotoScreen("start");
    

    除此之外,阅读nifty-gui-the-manual-1.3.2.pdf 可能会有所帮助

    【讨论】:

    • 谢谢,我忘记加载控件了。我需要加载样式吗?例如,如果我只想设置白色背景而不设置其他任何东西,就像我在我的问题中所做的那样。
    • 是的,您也需要样式。没有样式就没有按钮:)
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多