Creating JME3 User Interfaces with Nifty GUI
You may want your players to press a button to save a game, you want a scrolling text field for highscores, a text label to display the score, drop-downs to select keymap preferences, or checkboxes to specify multi-media options. Usually you solve these tasks by using Swing controls. Although it is possible to embed a jME3 canvas in a Swing GUI, a 3D game typically runs full-screen, or in a window of its own.
This document introduces you to Nifty GUI, a Java library for building interactive graphical user interfaces (GUIs) for games or similar applications. Nifty GUI (the de.lessvoid.nifty
package) is well integrated with jME3 through the com.jme3.niftygui
package. You define the base GUI layout in XML, and control it dynamically from your Java code. The necessary JAR libraries are included in your jME3 download, you do not need to install anything extra. (Just make sure they are on the classpath.)
Tutorial Overview
Learn to add a Nifty GUI to your jME3 game by going through this multi-part tutorial:
-
Understand the Nifty GUI Concepts described on this page.
-
Lay out your graphical user interface:
-
Integrate the GUI into the game:
Must Know: Nifty GUI Concepts
Nifty GUIs are made up of the following elements:
-
A Nifty GUI contains one or more screens.
-
Only one screen is visible at a time.
-
Name the first screen
start
. Name any others whatever you like. -
Screen are controlled by a Java Controller class.
-
-
A screen contains one or more layers.
-
Layers are containers that impose alignment on their contents (vertical, horizontal, or centered)
-
Layers can overlap (z-order), and cannot be nested.
-
-
A layer contains panels.
-
Panels are containers that impose alignment on their contents (vertical, horizontal, or centered)
-
Panels can be nested, and cannot overlap.
-
-
A panel contains images, text, or controls (buttons, etc).
JME-Nifty Sample Code
-
XML examples
-
HelloJme.xml - Can be found in jme-testdata/Interface/Nifty also.
-
-
Java examples
-
TestNiftyGui.java - Can be found in jme3 tests also.
-
TestNiftyToMesh.java - Can be found in jme3 tests also.
-
-
jME3-ready version of the Nifty GUI 1.3 demo (sample code, Java)
-
Find more sample code in the nifty-examples repositories.