# Text in/auf Text2D ändern



## Campino (23. Dez 2004)

Hi, 

ich möchte Werte per text2d darstellen, diese Werte ändern sich während das Programm läuft, gibt es eine Funktion, um den Text eines Text2D Objekts zu ändern, oder muss ich jedes mal ein neues Text2d Objekt anlegen?
cu
Campino


----------



## Illuvatar (24. Dez 2004)

Text2D hat die Methode setString (String text).
Guck mal bei "Wichtig", da ist ein Link zu einer Apidoc, die auch die Util-klassen wie Text2D auflistet.


----------



## Campino (24. Dez 2004)

Die Funktion is es Wahrschenlich nur...


```
Exception in thread "Thread-2" javax.media.j3d.CapabilityNotSetException: Shape3D: no capability to get appearance
	at javax.media.j3d.Shape3D.getAppearance(Shape3D.java:487)
	at com.sun.j3d.utils.geometry.Text2D.setString(Text2D.java:115)
	at main.KeyNavigatorExample.run(KeyNavigatorExample.java:81)
	at java.lang.Thread.run(Unknown Source)
```

danke schon ma


----------



## Illuvatar (24. Dez 2004)

Illuvatar hat gesagt.:
			
		

> *Capabilities:*
> Ein wichtiges Konzept in Java3d sind die Capabilities. Bevor ein SceneGraph live, also auf dem Bildschirm, ist können Capabilities gesetzt werden, die später bestimmte Veränderungen zulassen.
> Sie können über die Methode SceneGraphObject(Node ist aus dieser Klasse abgeleitet)#setCapability bzw clearCapability gesetzt werden. |-Verknüpfungen funktionieren _nicht_, jedes Capability-Bit muss einzeln gesetzt werden.
> Wenn bestimmte Capabilities nicht gesetzt sind, kann Java3d Optimierungen vornehmen (z.B. mehrere Groups zu einer zusammenfassen).



Probier mal, auf dem Shape2D ALLOW_APPEARANCE_READ anzumachen.


----------



## Campino (26. Dez 2004)

Es klappt nicht, hier mein Code, die Methode run() gehört zu einem Thread. Hier mein Code

```
public void run(){
		StringBuffer text=new StringBuffer("Koordinaten");
		Text2D t2d=new Text2D(text.toString(), new Color3f(1.0f, 0.0f, 0.0f), "Dialog", 18, Font.BOLD);
		t2d.setCapability(Shape3D.ALLOW_APPEARANCE_READ);
		BranchGroup bg=new BranchGroup();
		TransformGroup tg=new TransformGroup();
		
		tg.addChild(t2d);
		bg.addChild(tg);
		u.addBranchGraph(bg);
		while(true){
		Transform3D t3d=new Transform3D();
		u.getViewingPlatform().getViewPlatformTransform().getTransform(t3d);
		Vector3d v=new Vector3d();
		t3d.get(v);
		StringBuffer coords=new StringBuffer("Koordinaten: ");
		coords.append(v.x);
		coords.append("/");
		coords.append(v.y);
		coords.append("/");
		coords.append(v.z);
		
		t2d.setAppearance(createApp());
		t2d.setString(coords.toString());
	}
	}
	
	public Appearance createApp(){
		Appearance app=new Appearance();
		ColoringAttributes c=new ColoringAttributes();
		c.setColor(1.0f, 0.0f, 0.0f);
		app.setColoringAttributes(c);
		return app;
	}
```


----------

