如何在没有XML的情况下在Nifty GUI中显示Button?

时间:2015-07-29 14:28:31

标签: java slick2d nifty-gui

我试图为我的游戏制作一个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并将其设置为绝对位置?

1 个答案:

答案 0 :(得分:2)

当您想使用默认控件(如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

可能会有所帮助