Hi,
ich habe ein Problem undzwar öffnet sich beim Starten meines Programmes direkt das Canvas obwohl es das nicht soll und es auch nirgendwo steht, um genau zu sein öffnen sich der normale JFrame der sich öffnen soll(mit main-methode) und der Frame der das Canvas enthält.
Hier einmal die World mit dem entsprechenden Canvas komischerweise wird das Canvas aber auch in einem eigenen Frame geöffnet genauso das JLabel in einem eigenen JLabel geöffnet wird!
Warum ist das so?
World.java:
Das ist die Hauptmethode:
Mit der Methode Framestart.Menu();, rufe ich einen neuen JFrame auf, dies ist aber nicht der Frame mit dem Label etc...
Das Canvas öffnet sich wie bereits gesagt gleich mit diesem JFrame Start, dass habe ich herausgefunden, als ich einfach mal Thread.sleep vor der Initialisierung von start gesetzt habe!
MfG KingEldarion
ich habe ein Problem undzwar öffnet sich beim Starten meines Programmes direkt das Canvas obwohl es das nicht soll und es auch nirgendwo steht, um genau zu sein öffnen sich der normale JFrame der sich öffnen soll(mit main-methode) und der Frame der das Canvas enthält.
Hier einmal die World mit dem entsprechenden Canvas komischerweise wird das Canvas aber auch in einem eigenen Frame geöffnet genauso das JLabel in einem eigenen JLabel geöffnet wird!
Warum ist das so?
World.java:
Java:
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.universe.ViewingPlatform;
public class World extends JFrame{
Canvas3D can;
SimpleUniverse su;
BranchGroup bg;
ViewingPlatform vp;
TransformGroup tgCam;
Transform3D transCam;
Vector3f vecCam;
float xCam;
float yCam;
float zCam;
Background back;
JLabel lab = new JLabel("test");
//Geometrien
ColorCube cc = new ColorCube(0.5f);
public World(float x, float y, float z){
setTitle("Bibl");
can = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
su = new SimpleUniverse();
bg = new BranchGroup();
vp = su.getViewingPlatform();
tgCam = new TransformGroup();
transCam = new Transform3D();
xCam = x;
yCam = y;
zCam = z;
vecCam = new Vector3f(xCam, yCam, zCam);
back = new Background();
back.setApplicationBounds(new BoundingSphere());
back.setColor(1.0f, 1.0f, 1.0f);
su.getViewingPlatform().setNominalViewingTransform();
bg.addChild(cc);
bg.addChild(back);
bg.compile();
su.addBranchGraph(bg);
add(can);
add(lab);
}
}
Das ist die Hauptmethode:
Java:
import javax.swing.*;
public class Start extends JFrame{
private static JProgressBar load = new JProgressBar(0, 100);
JLabel textLoad = new JLabel("Das Programm wird geladen, bitte warten sie!");
static int i1 = 50;
static int i2 = 100;
public Start(){
setTitle("Lädt die Elfen");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
textLoad.setBounds(0, 0, 260, 15);
load.setBounds(0, 410, 1000, 50);
add(textLoad);
add(load);
}
public static void main(String[] args){
Start start = new Start();
start.setLocation(Framestart.left, Framestart.top);
start.setSize(1000, 500);
start.setVisible(true);
load.setValue(i1);
Framestart.Menu();
load.setValue(i2);
start.setVisible(false);
}
}
Mit der Methode Framestart.Menu();, rufe ich einen neuen JFrame auf, dies ist aber nicht der Frame mit dem Label etc...
Das Canvas öffnet sich wie bereits gesagt gleich mit diesem JFrame Start, dass habe ich herausgefunden, als ich einfach mal Thread.sleep vor der Initialisierung von start gesetzt habe!
MfG KingEldarion