【バグ?】Text2Dの文字が動的に変更できない。
コンストラクタで↓を実行
myText2D = new Text2D(nowTimeString, new Color3f(1.0f, 1.0f, 1.0f),
"Monospaced", 16, Font.BOLD);
スレッド等でテキスト書き換えを実行すると、、、
countCarMove++;
System.out.println(countCarMove);
nowTimeString = Integer.toString(countCarMove);
myText2D.setString(nowTimeString);
capabilityビットのエラーっぽいものが発生。
Exception in thread "Thread-4" javax.media.j3d.CapabilityNotSetException:
Appearance: no capability to set texture
at javax.media.j3d.Appearance.setTexture(Appearance.java:551)
at com.sun.j3d.utils.geometry.Text2D.setString(Text2D.java:151)
Text2dのcapailityBitにtexture変更許可が無いので
Appearance text2Dappearance = new Appearance();
text2Dappearance.setCapability(Appearance.ALLOW_TEXTURE_WRITE);
myText2D.setAppearance(text2Dappearance);
Appearanceクラスを作ってText2DのsetAppearanceで設定するも、、、
Exception in thread "Thread-4" java.lang.NullPointerException
at com.sun.j3d.utils.geometry.Text2D.setString(Text2D.java:121)
ぬるぽ発生。。
webで探すと
「Java 3D 1.2.1_04 API Known Issues/Bugs」
・4416995 Text2D.setString(String) restores filter setting default values
setStringにバグが残っているのか??
動的に変えるには新たにノードの動的変更を出来るようにして
Text2Dを新しくインスタンス化するしかない模様。