I have been trying to follow the GBUI examples but I can not get past this exception:
...
INFO: Node created.
Apr 18, 2010 1:54:04 PM com.jme.scene.Node attachChild
INFO: Child "BUI Root Node" attached to this node "RootNode"
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.jmex.bui.image.ImageUtil.getImage(ImageUtil.java:41)
at com.jmex.bui.icon.IconUtil.getIcon(IconUtil.java:37)
at com.jmex.bui.BDialogMessage.<clinit>(BDialogMessage.java:44)
at com.jmex.bui.headlessWindows.InputBoxUtil.createInputBox(InputBoxUtil.java:108)
at com.jmex.bui.headlessWindows.InputBoxUtil.createInfoInputBox(InputBoxUtil.java:121)
at gltest.HelloTerrain.createWindows(HelloTerrain.java:98)
at gltest.HelloTerrain.main(HelloTerrain.java:72)
Caused by: java.lang.NullPointerException
at com.jmex.bui.BImage.<clinit>(BImage.java:492)
... 7 more
AL lib: ALc.c:1352: exit(): closing 1 Device
AL lib: ALc.c:1329: alcCloseDevice(): destroying 1 Context
AL lib: alSource.c:2361: alcDestroyContext(): deleting 64 Source(s)
BUILD SUCCESSFUL (total time: 6 seconds)
My code (the relevant part of it) is as follows:
package gltest;
/**
*
* @author Patrick Chapman
*/
import java.net.URL;
import java.util.Stack;
import javax.swing.ImageIcon;
import com.jme.image.Image;
import com.jme.image.Texture;
import com.jme.input.InputHandler;
import com.jme.input.MouseInput;
import com.jme.scene.Skybox;
import com.jme.scene.VBOInfo;
import com.jme.scene.shape.Sphere;
import com.jme.scene.shape.Torus;
import com.jme.scene.state.TextureState;
import com.jme.system.DisplaySystem;
import com.jme.util.TextureManager;
import com.jme.util.Timer;
import com.jmex.bui.BComponent;
import com.jmex.bui.BDialogBox;
import com.jmex.bui.BInputBox;
import com.jmex.bui.BuiSystem;
import com.jmex.bui.BWindow;
import com.jmex.bui.UserResponse;
import com.jmex.bui.headlessWindows.DialogBoxUtil;
import com.jmex.bui.headlessWindows.InputBoxUtil;
import com.jmex.bui.event.DialogListener;
import com.jmex.bui.PolledRootNode;
import com.jmex.terrain.TerrainPage;
import com.jmex.terrain.util.ImageBasedHeightMap;
import com.jmex.terrain.util.ProceduralTextureGenerator;
import com.jme.bounding.*;
import com.jme.math.*;
import com.jme.scene.shape.Box;
import com.jmex.editors.swing.settings.*;
import com.jmex.game.*;
import com.jmex.game.state.*;
public class HelloTerrain {
static private DebugGameState state;
/**
* Entry point for the test,
* @param args
*/
public static void main(String[] args) throws Exception {
// Instantiate StandardGame
StandardGame game = new StandardGame("A Simple Test");
// Show settings screen
GameSettingsPanel.prompt(game.getSettings());
// Start StandardGame, it will block until it has initialized successfully, then return
game.start();
// Create a DebugGameState - has all the built-in features that SimpleGame provides
// NOTE: for a distributable game implementation you'll want to use something like
// BasicGameState instead and provide control features yourself.
state = new DebugGameState();
// Activate the game state
state.setActive(true);
// Add it to the manager
GameStateManager.getInstance().attachChild(state);
createWindows();
// createObjects();
// createSkybox();
// createTerrain();
}
private static void createWindows() {
// Create GUI window
InputHandler input = new InputHandler();
MouseInput.get().setCursorVisible(true);
BuiSystem.init(new PolledRootNode(Timer.getTimer(), input),
new Stack<BWindow>(),
"/rsrc/style2.bss"
);
state.getRootNode().attachChild(BuiSystem.getRootNode());
DialogListener responseListener = new DialogListener() {
public void responseAvailable(UserResponse response, BComponent source) {
System.out.println(response.toString());
if (source instanceof BInputBox) {
System.out.println(((BInputBox) source).getInputText());
}
}
};
BDialogBox box = InputBoxUtil.createInfoInputBox("inputTest1", "Message");
box.setDialogListener(responseListener);
state.getRootNode().updateRenderState();
}
Any help would be appreciated.