2010-03-03 6 views
1

이것은 내 코드입니다.이 코드는 미안합니다.이 애플릿을 제거 할 수있는 방법은 정말 도움이 필요합니다. 애플릿을 사용하고 싶지 않습니다. 초보자 내가 뭔가 해왔지만 괜찮은 것은 아니야. 당신은 스윙에서 독립형 GUI 응용 프로그램을 빌드 할 경우 감사애플릿을 확장하는 일부 코드

public class RedGreenGriffin extends Applet { 

    protected Canvas3D c1 = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); 
    // private Canvas3D c2 = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); 
    private static MainFrame mf; 
    protected SimpleUniverse u = null; 
    protected BranchGroup scene = null; 
    protected String URLString = "http://www.java3d.org/saurus.obj"; 
    protected float eyeOffset =0.03F; 
    protected static int size=600; 
    public void init() { 
     setLayout(new FlowLayout()); 
     GraphicsConfiguration config = 
      SimpleUniverse.getPreferredConfiguration(); 
     String v = getParameter("url"); 
     if (v != null) { URLString = v; } 
     c1.setSize(size, size); 
     add(c1); 
     scene = createSceneGraph(0); 
     u = new SimpleUniverse(c1); 
     // This will move the ViewPlatform back a bit so the 
     // objects in the scene can be viewed. 
     //u.getViewingPlatform().setNominalViewingTransform(); 
     u.addBranchGraph(scene); 

    } 
public BranchGroup createSceneGraph(int i) { 
    System.out.println("Creating scene for: "+URLString); 
    // Create the root of the branch graph 
    BranchGroup objRoot = new BranchGroup(); 
    try{ 
     Transform3D myTransform3D = new Transform3D(); 
     myTransform3D.setTranslation(new Vector3f(+0.0f,-0.15f,-3.6f)); 
     TransformGroup objTrans = new TransformGroup(myTransform3D); 
     objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 
     Transform3D t = new Transform3D(); 
     TransformGroup tg = new TransformGroup(t); 
     tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); 
     tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 
     objTrans.addChild(tg); 
     URL url = new URL(URLString) ; 
     ObjectFile f = new ObjectFile(); 
     f.setFlags(ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY); 
     System.out.println("About to load"); 

     Scene s = f.load(url); 
     Transform3D myTrans = new Transform3D(); 
     myTrans.setTranslation(new Vector3f(eyeOffset, -eyeOffset, 0F)); 
     TransformGroup mytg = new TransformGroup(myTrans); 
     //mytg.addChild(s.getSceneGroup()); 
     tg.addChild(mytg); 
     Transform3D myTrans2 = new Transform3D(); 
     myTrans2.setTranslation(new Vector3f(-eyeOffset, +eyeOffset, 0F)); 
     TransformGroup mytg2 = new TransformGroup(myTrans2); 
     //mytg2.addChild(s.getSceneGroup()); 
     Hashtable table = s.getNamedObjects(); 
     for (Enumeration e = table.keys() ; e.hasMoreElements() ;) { 
     Object key = e.nextElement(); 
     System.out.println(key); 
     Object obj = table.get(key); 
     System.out.println(obj.getClass().getName()); 
     Shape3D shape = (Shape3D)obj; 
     //shape.setCapability(Shape3D.ALLOW_APPEARANCE_WRITE); 
     Appearance ap = new Appearance(); 
     Color3f black = new Color3f(0.0f, 0.0f, 0.0f); 
     Color3f red = new Color3f(0.7f, .0f, .15f); 
     Color3f green = new Color3f(0f, .7f, .15f); 
     ap.setMaterial(new Material(green,black, green, black, 1.0f)); 
     Appearance ap2 = new Appearance(); 
     ap2.setMaterial(new Material(red, black, red, black, 1.0f)); 
     float transparencyValue = 0.5f; 
     TransparencyAttributes t_attr = 
      new TransparencyAttributes(
      TransparencyAttributes.BLENDED, 
      transparencyValue, 
      TransparencyAttributes.BLEND_SRC_ALPHA, 
      TransparencyAttributes.BLEND_ONE); 
     ap2.setTransparencyAttributes(t_attr); 
     ap2.setRenderingAttributes(new RenderingAttributes()); 
     ap.setTransparencyAttributes(t_attr); 
     ap.setRenderingAttributes(new RenderingAttributes()); 
     // bg.addChild(ap); 
     shape.setAppearance(ap); 
     mytg2.addChild(new Shape3D(shape.getGeometry(),ap2)); 
     mytg.addChild(new Shape3D(shape.getGeometry(),ap)); 
    } 
    tg.addChild(mytg2); 
    System.out.println("Finished Loading"); 
    BoundingSphere bounds = 
     new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); 
    Color3f light1Color = new Color3f(.9f, 0.9f, 0.9f); 
    Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); 
    DirectionalLight light1 
    = new DirectionalLight(light1Color, light1Direction); 
    light1.setInfluencingBounds(bounds); 
    objTrans.addChild(light1); 
      // Set up the ambient light 
    Color3f ambientColor = new Color3f(1.0f, .4f, 0.3f); 
    AmbientLight ambientLightNode = new AmbientLight(ambientColor); 
    ambientLightNode.setInfluencingBounds(bounds); 
    objTrans.addChild(ambientLightNode); 


    MouseRotate behavior = new MouseRotate(); 
    behavior.setTransformGroup(tg); 
    objTrans.addChild(behavior); 
     // Create the translate behavior node 
    MouseTranslate behavior3 = new MouseTranslate(); 
    behavior3.setTransformGroup(tg); 
    objTrans.addChild(behavior3); 
    behavior3.setSchedulingBounds(bounds); 

    KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(tg); 
    keyNavBeh.setSchedulingBounds(new BoundingSphere(
     new Point3d(),1000.0)); 
    objTrans.addChild(keyNavBeh); 

    behavior.setSchedulingBounds(bounds); 
    objRoot.addChild(objTrans); 
    } catch(Throwable t){System.out.println("Error: "+t);} 
    return objRoot; 
} 
public RedGreenGriffin() { 
} 
public void destroy() { 
    u.removeAllLocales(); 
} 

public static void main(String[] args) { 

    RedGreenGriffin s = new RedGreenGriffin(); 
    if (args.length > 0) { 
     s.URLString = args[0]; 
    } 
    mf = new MainFrame(s, size, size); 
} 
} 
+0

그래서이 목표는 더 이상 애플릿이 아닙니다 ...? –

+0

네, 애플릿이 아니길 바래요. – Johanna

답변

0

, 당신은 JFrame보다는 Applet에 콘텐츠를 넣어해야합니다.

독립 실행 형 Java GUI 응용 프로그램을 빌드하는 데 사용할 수있는 다른 GUI 프레임 워크가 있지만 Swing이 가장 많이 사용되며 가장 유용한 설명서를 찾을 수 있습니다 (Stack 오버플로 :-)). 내가 변경하여 시작 했죠

+0

그래서 "애플릿 확장"을 삭제하고 "JFrame을 확장"해야합니까? – Johanna

0

extends Applet

extends JFrame에 그러나, JFrame이 필요로하거나 다른 곳에서 그 코드를 이동하려는 것이다 있도록하는 public void init() 방법을 사용하지 않습니다. 이것을 GUI 프로그램을 만들기의 목표와 , 내 제안은에 다음 중 하나

  • frameInit()
  • init() 방법의 이름을 변경 ... 아니면 그냥 생성자에 init()의 코드를 이동합니다.
관련 문제