📄 defaultbackgrounduielement.java
字号:
package org.j3de.ui.impl;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Node;
import javax.media.j3d.TextureAttributes;
import javax.media.j3d.Transform3D;
import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.image.TextureLoader;
import org.j3de.exception.ExceptionHandler;
import org.j3de.ui.Skin;
import org.j3de.ui.Skinable;
import org.j3de.ui.SkinException;
import org.j3de.ui.UIElement;
import org.j3de.ui.UILocalElement;
import org.j3de.ui.BackgroundUIElement;
import org.j3de.util.ConfigHelper;
import org.j3de.util.EntryFactory;
public class DefaultBackgroundUIElement implements UILocalElement, Skinable {
private Background background;
private Appearance backgroundApp;
private BackgroundUIElement uiRemoteElement;
private Transform3D transform;
public DefaultBackgroundUIElement() {
background = new Background();
background.setApplicationBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0));
BranchGroup backGeoBranch = new BranchGroup();
Sphere sphereObj = new Sphere(1.0f, Sphere.GENERATE_NORMALS |
Sphere.GENERATE_NORMALS_INWARD |
Sphere.GENERATE_TEXTURE_COORDS, 45);
backgroundApp = sphereObj.getAppearance();
backGeoBranch.addChild(sphereObj);
background.setGeometry(backGeoBranch);
uiRemoteElement = new RemoteBackgroundUIElement();
}
public Node getNode() {
return background;
}
/** Background is not accessible from Remote. */
public UIElement getRemoteElement() {
return uiRemoteElement;
}
public void setSkin(Skin skin) throws SkinException {
ConfigHelper helper = new ConfigHelper(skin.getXMLFragment("background_texture"));
String url = helper.getPropertyValue("url");
double scale = Double.parseDouble(helper.getPropertyValue("scale"));
try {
if (url != null) {
TextureLoader tex = new TextureLoader(new URL(url), null);
backgroundApp.setTexture(tex.getTexture());
transform = new Transform3D();
transform.setScale(scale);
TextureAttributes textureAttributes = new TextureAttributes();
textureAttributes.setTextureTransform(transform);
backgroundApp.setTextureAttributes(textureAttributes);
}
} catch (MalformedURLException e) {
ExceptionHandler.handleException(e);
}
}
public void addBoundsChangeListener(ChangeListener listener) {
}
public void removeBoundsChangeListener(ChangeListener listener) {
}
/** Dummy implementation, Background should not be accessed from a remote location. */
private class RemoteBackgroundUIElement implements BackgroundUIElement {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -