⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultbackgrounduielement.java

📁 Java 3D Desktop Environment旨在使用Java 3D来创建一个3D桌面环境。功能包括:分布式的应用程序
💻 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 + -