HILFE: Applet in Frame einbinden?

  • Themenstarter Themenstarter Sandmann2k
  • Beginndatum Beginndatum
S

Sandmann2k

Hallo!

Wir haben folgendes Problem. Wir haben ein Java3D-Applet und eine GUI (also ein Frame) mit 'nem Layout.
Ist es irgendwie möglich, das Applet aus dem Frame heraus zu starten bzw. das Applet in den GUI-Frame und ins Layout einzubinden?

Er weigert sich immer ein Applet einzubinden. Aber offensichtlich können 3D-Umgebungen mit Java3D nur als Applet realisiert werden.

Bitte daher dringend um eure Hilfe.
 
Ich bin zwar weder §D noch Applet Experte, aber vielleicht kannst Du ja mal Fehlermeldungen oder Code mit geben, so könnte man vielleicht eher was dazu sagen

Takidoso
 
Hier ein Auszug aus dem 3D-Package:
Code:
package com.sun.j3d.utils.applet;    

public class MainFrame extends java.awt.Frame implements java.lang.Runnable, java.applet.AppletStub, java.applet.AppletContext {

...

//Der Konstruktor: i - Breite, il - Höhe
public MainFrame(java.applet.Applet applet, int i, int i1);

}

Bis jetzt wird das 3D-Applet immer eigenständig aufgerufen, und zwar so:
Code:
public static void main(String[] args){                    
new MainFrame(new Universe(), 800, 600);      
}//main


Und nun das Problem: Dieses Applet muss in eine GUI, also einen Frame integriert werden.
So haben wir es bis jetzt versucht:

Code:
pane.setLayout(new GridBagLayout()); // Layoutmanager gewählt
GridBagConstraints c = new GridBagConstraints();          
if (shouldFill) {              
//natural height, maximum width              
c.fill = GridBagConstraints.BOTH;          
}            

pane.add(new MainFrame(new Universe(), 800, 600), c);
pane bezieht sich hierbei auf das contenPane des GUI-Frame.

Dann startet das Programm zwar, aber die GUI wird nicht mehr angezeigt. Nur das Applet wird geladen und dort fehlen dann plötzlich auch alle Texturen, als wenn die Pfade zu den Textur-Files nicht mehr stimmen.
Und der Compiler liefert folgende Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
	at java.awt.Container.addImpl(Container.java:1010)
	at java.awt.Container.add(Container.java:899)
	at BillardGUI.addComponentsToPane(BillardGUI.java:184)
	at BillardGUI.createAndShowGUI(BillardGUI.java:393)
	at BillardGUI.access$100(BillardGUI.java:19)
	at BillardGUI$9.run(BillardGUI.java:413)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
 
also ....
zu nächst mal scheint es so zu sein dass ihr ein Frame in ein panel stopfen wollt. Das denke ich kann nicht funktionieren. Ich habe zwar keine Hinweise darauf wie das ganze Applet aufgebaut ist, aber wenn es gut gemacht ist, sollte die Grafik nicht direkt in einem Frame liegen, also sucht im Code ob bzw was der Mainframe also panel eigentlich anzieht und versucht dies in Euer Panel zu stecken.
achja, nur zur Info, aber ich glaube ihr arbeitet ausschließlich mit AWT, gelle, denn dann ist gut! Bin mir nicht sicher ob AWT sich mit Swing mischen lässt. ich glaube eher nicht.

takidoso
 
Zurück