3D-Grafik Canvas ist ein eigener Frame?!

KingEldarion

Bekanntes Mitglied
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:
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
 

Airborne

Mitglied
Du versuchst eine Splashscreen zu machen? Mit Login?

Warum legst du die nicht als Dialog aus, läßt deine Main-Klasse rein logisch sein (keine extension zu JFrame) und fährst damit hoch? sollte deutlich einfacher sein.

Ansonsten: wer erzeugt die Instanz von "World" die du siehst? das muss ja irgendwer zum Leben erwecken.
 

KingEldarion

Bekanntes Mitglied
Splashscreen? Login?

Wo mach ich denn da nen Login und was ist ein Splashscreen?

World wird per Buttondruck im Menu, dass man mit "Framestart.Menu();" öffnet, geöffnet!
 

Airborne

Mitglied
ah, also mit Menu vorab - könnte man auch als Splash bezeichnen.

Aber irgendwer startet "World" da ja schon - sonst würde es nicht angezeigt werden.
 

KingEldarion

Bekanntes Mitglied
Ja eben, und genau das ist ja die Frage, es wird übrigens wenn man dann per Button die World öffnet, wird das Canvas auch nicht angezeigt, nur halt in diesem JFrame am Anfang, in World wird der nur das JLabel angezeigt!
 

Michael...

Top Contributor
[JAVA=65] add(can);
add(lab);[/code]
JFrame bzw. dessen ContentPane benutzt im Standard ein BorderLayout. Wenn man hier einfach nur per add() eine Komponente hinzufügt, wird diese automatisch im CENTER Bereich platziert. Befindet sich dort bereits eine Komponente wird diese "rausgeschmissen". Daher wird hier nur das Label angezeigt. ==> Beim Hinzufügen der Kompenten den Bereich mit angeben, in dem sie platziert werden sollen. Details s. LayoutManager, BorderLayout...
 

KingEldarion

Bekanntes Mitglied
Ich dachte JFrame haben Flowlayout, naja, werds mal kurz ausprobieren.


EDIT:

Es ändert sich trotzdem nichts außer das das JLabel jetzt oben steht...(Hab jetzt Flowlayout)
 
Zuletzt bearbeitet:

KingEldarion

Bekanntes Mitglied
Wenn ich vor das add das getConetentPane schreibe ändert sich weiterhin nichts...

Übrigens habe ich mal ausprobiert das ganze inne runnable jar zu stecken, dass lässt sich garnicht ausführen, wenn man doppelklick drauf macht, dann öffnet sich nichts, im Task-Manager wird auch kein neuer Java-Prozess angezeigt!
 

truesoul

Top Contributor
Naja, du vermischt auch lightweight(Swing) mit heavyweight Componente(Canvas3D/AWT).
Das führt zu Problemen ( Welche Java Version nutzt du? ), das Componenten überdeckt werden können. Versuche mal kein lightweight und heavyweight zu vermischen.
 

Airborne

Mitglied
Du musst schneller clicken. Das hilft.

Und dann machst du jetzt mal 2 Schritte zurück. Strukturiere den Code: vergebe längere, klarere Variablen-Namen, eröffne init() Methoden und schaue dir das nochmal in Ruhe an.
Mit Gewalt wird das nix. Vielleicht auch besser morgen anschauen.
 

KingEldarion

Bekanntes Mitglied
Was isn an dem Code so schlimm? Ist doch strukturiert und init-methoden brauch ich doch noch garnicht...

Also meint ihr ich sollte einen Frame und nicht einen JFrame nehmen oder was?!
 

KingEldarion

Bekanntes Mitglied
Weiß niemand was?

EDIT:

Ich habe sogar evtl. eine Vermutung, undzwar habe ich in meiner Klasse Framestart habe ich alle Methoden um alle bestimmten Frames zu öffnen, dort auch die Methode um die Klasse World zu öffnen, World deklariere ich aber nicht erst in der Methode sondern halt (weiß grad nicht wie mans nennt wenn man das einfach in die Class schreibt).
Nun habe ich diese Zeile also einfach mal mit // als Kommentar umgeändert damit das nicht im Code ist, nun öffnet sich das nichtmehr!

EDIT2:
Ich habe mal die add-methode für das Canvas rausgenommen und nun öffnet sich das Canvas trotzdem, also öffnet es sich sozusagen ohne das ich irgendwo schreibe das es das tun soll!?!?!?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Canvas oder Polygone? AWT, Swing, JavaFX & SWT 3
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
dereki2000 AWT Canvas zeichnet nicht AWT, Swing, JavaFX & SWT 7
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
Prafy AWT Klickbare Bereiche auf Canvas AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
L JavaFX Canvas max size? AWT, Swing, JavaFX & SWT 1
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
C Java FX Canvas missing getGraphicContext2D AWT, Swing, JavaFX & SWT 5
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
Luk10 KeyBindings mit Canvas? AWT, Swing, JavaFX & SWT 3
B LookAndFeel GWT: Canvas in TabSet nicht sichtbar AWT, Swing, JavaFX & SWT 2
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
T Canvas clipping AWT, Swing, JavaFX & SWT 4
S 2 Canvas übereinander AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
M Wofür Canvas? AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
2 AWT Zeichnen in Canvas AWT, Swing, JavaFX & SWT 5
B 2D-Grafik Malen/übermalen mit Canvas AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
G Auf Canvas zeichnen nur über boolean-Abfragen? AWT, Swing, JavaFX & SWT 5
S Canvas-Inhalt in Laufzeit ändern AWT, Swing, JavaFX & SWT 6
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
T AWT canvas AWT, Swing, JavaFX & SWT 3
P Canvas: String wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
H Zeichnen auf smartgwt Canvas AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
K Swing Sinuskurve zeichnen auf Canvas AWT, Swing, JavaFX & SWT 2
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
D Canvas soll angezeigtes jpg-Bild aktualisieren AWT, Swing, JavaFX & SWT 4
N zeichnen auf awt canvas AWT, Swing, JavaFX & SWT 9
G Ein Wort in einem String färben in einer Canvas AWT, Swing, JavaFX & SWT 10
J Canvas Inhalt als Bild speichern! AWT, Swing, JavaFX & SWT 16
T zeichnen mit canvas AWT, Swing, JavaFX & SWT 3
S repaint im Canvas AWT, Swing, JavaFX & SWT 3
D Canvas und Buttons AWT, Swing, JavaFX & SWT 20
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
C canvas.draw zeichne ohne ausfüllen AWT, Swing, JavaFX & SWT 9
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
T Canvas gegen Container austauschen --> GUI fehlt AWT, Swing, JavaFX & SWT 4
P Canvas Inhalt löschen AWT, Swing, JavaFX & SWT 4
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
F ToolTip auf Canvas AWT, Swing, JavaFX & SWT 2
L Probleme mit mehreren Canvas: Überlagerungseffekte? AWT, Swing, JavaFX & SWT 5
N Zu hoher Speicherverbrauch beim Zeichnen (Canvas) AWT, Swing, JavaFX & SWT 5
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
T Textfeldwert in canvas AWT, Swing, JavaFX & SWT 4
D cannot access Canvas AWT, Swing, JavaFX & SWT 13
G Canvas in SWT aktualisieren AWT, Swing, JavaFX & SWT 21
S AUF Canvas Zeichnen Fehler! AWT, Swing, JavaFX & SWT 10
G Canvas löschen AWT, Swing, JavaFX & SWT 15
H Sowas wie ein Canvas AWT, Swing, JavaFX & SWT 3
D Inhalt einer Canvas löschen (SWT.NO_BACKGROUND gesetzt) AWT, Swing, JavaFX & SWT 3
G GridBagLayout mit Canvas-Positionsproblem AWT, Swing, JavaFX & SWT 5
J Canvas und JTextField AWT, Swing, JavaFX & SWT 2
T erkennen ob innerhalb oder außerhalb von canvas gezeichnet AWT, Swing, JavaFX & SWT 2
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
P Tranparentes Canvas AWT, Swing, JavaFX & SWT 8
P Inhalt eines Canvas verkleinern AWT, Swing, JavaFX & SWT 3
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
M Codeteilung -> Canvas zeichnet nicht mehr AWT, Swing, JavaFX & SWT 40

Ähnliche Java Themen

Neue Themen


Oben