Java 如何在没有XML的漂亮GUI中显示按钮?

Java 如何在没有XML的漂亮GUI中显示按钮?,java,slick2d,nifty-gui,Java,Slick2d,Nifty Gui,我正在尝试为我的游戏制作一个GUI。我尝试过各种各样的图书馆,最后我找到了漂亮的。我还没有找到任何有用的教程,因此我从代码示例中学习 我想显示一个简单的按钮,但我的代码似乎不起作用。我已尝试设置面板的背景色,该面板一直在工作。我不知道为什么按钮不显示 以下是我所拥有的: protected void prepareNifty(Nifty nifty) { ScreenBuilder sb = new ScreenBuilder("start"); LayerBuilder lb

我正在尝试为我的游戏制作一个GUI。我尝试过各种各样的图书馆,最后我找到了漂亮的。我还没有找到任何有用的教程,因此我从代码示例中学习

我想显示一个简单的
按钮
,但我的代码似乎不起作用。我已尝试设置
面板的背景色,该面板一直在工作。我不知道为什么
按钮不显示

以下是我所拥有的:

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


如何显示
按钮
并将其设置为绝对位置?

如果要使用默认控件(如按钮控件),则还需要加载控件和样式

尝试以下方法:

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

除此之外,阅读

可能会有所帮助。谢谢,我忘记加载控件了。我需要加载样式吗?例如,如果我想只设置白色背景,而不设置其他内容,就像我在问题中所做的那样。是的,你也需要样式。没有样式,就没有按钮:)