I wouldn’t say it was tough, jME already uses an unshaded material for rendering NiftyGUI Elements so I just added in a means to change that material.
I added in ImageMaterialRenderer and MaterialRenderer classes to Nifty and modified the Element class with methods to add/remove these renderers with materials and textures. I also modified the RenderDevice interface and RenderDeviceJme with methods that allow the new renderers to set a custom material on the RenderDevice and then swap it back to default when the Element is done rendering.
I also happened to notice that the rendering of nine part resize images seemed rather inefficient. Nine part images are split up into nine sections so they can be stretched only in certain areas, my game makes extensive use of nine part resizing. Anyway I noticed that jME renders each of the nine parts independently of one another with a quad, so each Nifty Element using a nine part resizing scheme for drawing the texture requires nine draw calls.
I went ahead and added in a new 16 vertex Mesh and use that for drawing nine part images with a single draw call. I had to modify the NinePartResizeRenderStrategy class in Nifty with a new class to pass to RenderDeviceJme so that all of the information was present for the new Mesh, NinePartQuad, to modify UV coordinates and vertex positions for each Element.
Anyway I’ll add in some comments, build the libraries and post up a link later tonight. Possibly tomorrow, I have to ride my bike out to the post office to return some bad RAM to NewEgg tonight, stupid restocking fee