Dear JGO,
I'm currently writing a game with
Slick2D and
NiftyGUI (v. 1.3.2). As always I've created a simple XML file with a center aligned panel. The panel contains two labels (horizontal oriented):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| ?xml version="1.0" encoding="UTF-8"?> <nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http:// www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty- gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd"> <useStyles filename="nifty-default-styles.xml" /> <useControls filename="nifty-default-controls.xml" /> <screen id="start"> <layer> <!-- Caption --> <panel childLayout="horizontal" align="center"> <control id="lblCaption" name="label" color="#bccf39" text="caption" /> <control id="lblVersion" name="label" text="version" marginLeft="10px" color="#ff6000" /> </panel> </label> </screen> |
I can change the text content of those controls in Java:
1 2 3 4
| Label lblVersion = screen.findNiftyControl("lblVersion", Label.class); Label lblCaption = screen.findNiftyControl("lblCaption", Label.class); lblCaption.setText("A very long long long long long text!"); |
The text will be changed -
but not the width of the label! The result: the text is cropped. That's very annoying. I've tried the following solution to solve the problem:
1 2 3 4
| TextRenderer renderer = lblCaption.getElement().getRenderer(TextRenderer.class); lblCaption.setWidth(new SizeValue(renderer.getTextWidth() + "px")); lblCaption.getElement().getParent().getParent().layoutElements(); |
This works for me but it's not a very elegant way. Has anyone experience with this problem?
