R
resTive
Gast
Hi ihr,
ich spiele grade ein wenig mit dem SimpleUniverse (Canvas3D) rum und habe versucht das SimpleUniverse in ein JPanel zu stecken, welches in JSplitPanes positioniert ist.
Allerdings wird es mir nicht angezeigt. Es erscheint auch keine Fehlermeldung. Lass ich das Canvas3D direkt auf den ContentPane zeichnen, funktioniert das wunderbar. Kann mir jemand erklären was ich falsch mache, bzw ob das vielleicht so garnicht geht, wie ich das vorhabe?
Hier mal der Code dazu:
gruß
resTive
ich spiele grade ein wenig mit dem SimpleUniverse (Canvas3D) rum und habe versucht das SimpleUniverse in ein JPanel zu stecken, welches in JSplitPanes positioniert ist.
Allerdings wird es mir nicht angezeigt. Es erscheint auch keine Fehlermeldung. Lass ich das Canvas3D direkt auf den ContentPane zeichnen, funktioniert das wunderbar. Kann mir jemand erklären was ich falsch mache, bzw ob das vielleicht so garnicht geht, wie ich das vorhabe?
Hier mal der Code dazu:
Code:
public class Client extends JFrame {
private static Client sInstance;
private static boolean sIsInitialized;
private JPanel iInformationPanel;
private JPanel iGraphicPanel;
private JPanel iStatusPanel;
public static void initialize() {
if (sInstance == null) {
sInstance = new Client();
}
sIsInitialized = true;
}
public static boolean isInitialized() {
return sIsInitialized;
}
public static Client getInstance() {
return sInstance;
}
private Client() {
this.setTitle("J3D Experimente");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(new Dimension(1024, 768));
iInformationPanel = new JPanel(new GridBagLayout());
iInformationPanel.setPreferredSize(new Dimension((int)(this.getWidth()*0.25), (int)(this.getHeight()*0.75)));
iGraphicPanel = new JPanel();
iGraphicPanel.setPreferredSize(new Dimension((int)(this.getWidth()*0.25), (int)(this.getHeight()*0.75)));
iStatusPanel = new JPanel(new GridBagLayout());
iInformationPanel.add(new JLabel("Information"));
iStatusPanel.add(new JLabel("Status"));
Canvas3D c3d = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); //So am besten
SimpleUniverse simpleU = new SimpleUniverse(c3d); //Das VirtualUniverse, hier wird auch schon der View hinzugefügt
BranchGroup bg = new BranchGroup(); //Haupt-BranchGroup
bg.addChild(new ColorCube(0.4f/*Größe*/)); //ColorCube wird hinzugefügt
OrbitBehavior orbit = new OrbitBehavior(c3d, OrbitBehavior.REVERSE_ALL); //OrbitBehavior liegt in dem Paket com.sun.j3d.utils.behaviors.vp
orbit.setSchedulingBounds(new BoundingSphere());
simpleU.getViewingPlatform().setViewPlatformBehavior(orbit);
bg.compile(); //Optimiert das Rendern
simpleU.addBranchGraph(bg); //Fügt den SceneGraph hinzu
simpleU.getViewingPlatform().setNominalViewingTransform(); //Versetzt die Kamera so, dass man gleich etwas sehen kann
//So einfach war das :)
iGraphicPanel.add(c3d); //Vor 1.5: getContentPane().add
JSplitPane lTopSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, iInformationPanel, iGraphicPanel);
lTopSplitPane.setDividerSize(3);
JSplitPane lBottomSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, lTopSplitPane, iStatusPanel);
lBottomSplitPane.setDividerSize(3);
Container lContainer = this.getContentPane();
lContainer.setLayout(new BorderLayout());
lContainer.add(lBottomSplitPane, BorderLayout.CENTER);
//this.addComponentListener(new ClientComponentListener());
this.setLocationRelativeTo(null);
}
public static void main(String args[]) {
Client.initialize();
Client.getInstance().setVisible(true);
}
}
gruß
resTive