# Was soll ich benutzen? Java2D, Java3D, Swing, AWT??



## mdames (2. Jul 2004)

Hi Leute,

habe mir in den Kopf gesetzt, kein normales im Fenster Programm zu schreiben, 
also das sich ein Fenster mit Menüleiste und so öffnet.  Applet ist auch nich drin!

Ich möchte eher nen schönen schwarzen Grafikbildschirm (so wie bei allen Spielen),
in dem ich dann munter Menüs malen kann und ne schöne Maus bauen kann und
so weiter und so fort... 
ich stoße halt auf versch. sachen wie awt und so, hab aber voll den Durchblick verloren
was ich dafür benutzen kann! 
Wär nett, wenn mir jemand ne kleine Antwort schreiben könnte!

Thx, Martin.


----------



## Beni (2. Jul 2004)

*AWT*: Advanced Window Toolkit, zum erstellen von einfachen Buttons etc, wie man sie in jedem GUI-Programm findet.
*Swing*: Eine Weiterentwicklung von AWT, bestitz auch Sachen wie Tabellen und Bäume.
*Java2D*: Ein Teil des AWT's, kann verschiedene Sachen wie Bilder malen, transparente Flächen vereinen, uvm.
*Java3D*: Eine 3D-Engine die unter benutzung von OpenGL oder DirectX 3-dimensionale Sachen malt. Sehr aufwendig, und hat auch noch 1 oder 2 Bugs.
*jogl*: Alternative zu Java3D, eine Verbindung zwischen Java und OpenGL. Nur Basics (keine vorgefertigten Elemente wie Universe, geometrische Objekte, ...), dafür robust und stabil.

Lies dich mal durch ein paar Bücher hindurch, wenn du was GUI-mässiges machen willst, solltest Du die Sachen schon kennen...

mfg Beni


----------



## mdames (2. Jul 2004)

ja gut, habe ich ja schon,

finde aber nur beispiele und Erklärungen für Applets und einfache Windows Fenster...
aber das möcht ich ja nicht.... 
bin schon nen Monat am suchen, aber irgendwie bin ich der einzige der nur nen 
schwarzen grafikbildschirm zum malen haben möchte!

Gruss Martin.


----------



## Beni (2. Jul 2004)

2D oder 3D ?

Man kann ein normales (J)Window nehmen, und es den ganzen Platz beanspruchen lassen:


```
Window window = ... // z.B. ein JFrame

window.setUndecorated ( true );  // natürlich nur bei einem Frame, Dialog...
window.setResizable ( false );
window.setVisible( true );
window.getGraphicsConfiguration().getDevice().setFullScreenWindow( window )
```

Siehe auch API.

Aber Zeichnen musst du immer noch selbst (schwarz...).

mfg Beni

_[Edit: dank Roars nettem Kommentar  :bae: ]_


----------



## mdames (2. Jul 2004)

Ich denke mal 2D wird reichen... um nen paar Fensterchen zu malen...

Kann man mit dem AWT Fenster in Fenster proggen?

Gruss Martin!


----------



## Beni (3. Jul 2004)

Da musst du dir was eigenes zusammenschreiben.

Wenn ich das schreiben müsste würde ich ein Panel nehmen, ihm ein weiteres Panel hinzufügen, welches nur einen Teil des Platzes benötigt (dort werden die Components des Fensters hinzugefügt), und benützte den Rest des Originalpanels um Titel und Rand zu zeichnen.


----------



## L-ectron-X (3. Jul 2004)

Sag doch mal genau, was Du "malen" möchtest, dann finden wir sicher das richtige Element für Dich.


----------



## Roar (3. Jul 2004)

@Beni: AWT heisst Abstract Window Toolkit, und in deinem code muss es heissen: setFullscreenWindow(window)
*klugscheiss*   :roll: 

@mdames: Wieso benutzt du nicht swing? da kannstz du auch shcön zeichnen drin, und sieht hübscher aus und hat mehr komponenten als das AWT...


----------



## mdames (3. Jul 2004)

Ich möchte halt ein Java Spiel programmieren, mehr ein Statistik Spiel als ein Grafik Spiel....

Quasi als Projekt neben meinem Studium um meine Programmierkenntnisse und Erfahrungen
auszuweiten und zu vertiefen.

Ich wollte eigentlich ein textbasiertes Spiel schreiben, also auf der Text Console, aber ich bekomme
die Jcurses nicht ordentlich zum laufen... und es gibt so gut wie keine Doku um netz.
Und da denke ich nunmal über eine Alternative nach.

Es soll kein häßliches Applet sein, und kein Windows Fenster, denn mein Spiel soll vom Flair und Atmosphäre
kein Excel Style oder Windows Style haben. 
Und daher möcht ich einen schönen schwarzen Grafikbildschirm, indem ich dann schöne Menü's malen kann
und mein eigenes Flair bauen kann!
 Ich denke doch das das mit Java irgendwie geht, aber da das alles sehr komplex ist, blick ich da nicht mehr so richtig durch und vielleicht könnt Ihr mir da ja schneller weiterhelfen!

Danke,

gruss Martin.


----------



## Roar (3. Jul 2004)

also ich denke dass du da mit swing weit kommen kannst. du braucht deine komponenten nicht selbst zu zeichnen, aber sehen trotzdem hübsc haus und anders als die standart hässlcihen Wind Menüs. dazu gibts look and feels. hier: www.javootoo.com


----------



## Isaac (3. Jul 2004)

Ich bin da ja immer noch ein verfechter der OpenGL Implementierungen.

Z.b: http://www.jausoft.com/gl4java/

Damit habe ich selber schon ne Menge gemacht und das feine daran ist das es ne Menge Code gibt den man zum experimentieren nutzen kann. 

Wenn du dir OpenGL installiert hast gehts du zu 

http://nehe.gamedev.net/

und saugst dir die Lessons. Die laufen Out of the Box und man findet einen guten Einstieg. Und da OpenGL wie Java Plattformunabhängig ist bekommt man auch beim Portieren keine Probleme.


----------



## Reality (3. Jul 2004)

Hi Roar!


			
				Roar hat gesagt.:
			
		

> also ich denke dass du da mit swing weit kommen kannst. du braucht deine komponenten nicht selbst zu zeichnen, aber sehen trotzdem hübsc haus und anders als die standart hässlcihen Wind Menüs. dazu gibts look and feels. hier: www.javootoo.com


wie kann ich die Look and Feels implementieren? Kann ich dir irgendwo als Package runterladen? Programmiere ich die dann genau gleich wie Swing?

Liebe Grüße
Reality


----------



## mdames (3. Jul 2004)

Kann man in Swing Fenstern auch 2D und 3D Objekte anzeigen lassen?

Wie kann man Swing Look&Feels selber machen?

Wenn ich ein Programm habe, das mit Swing arbeitet ist es dann ein einfaches
das Look & Feel auszutauschen? Auch RunTime?

Gruss Martin.


----------



## Beni (3. Jul 2004)

Look and Feel ist ein Teil von Swing.

Man schreibt im Code

```
String className = ... // Der Name der Klasse, welche das Look and Feel implementiert.
  UIManager.setLookAndFeel( className );
```
und die Swing-Components werden entsprechend aussehen.
Guck mal hier


----------



## Isaac (3. Jul 2004)

mdames hat gesagt.:
			
		

> Kann man in Swing Fenstern auch 2D und 3D Objekte anzeigen lassen?
> 
> Wie kann man Swing Look&Feels selber machen?
> 
> ...




Man kann alles machen was manwill. Auch 3D Objekte in Swing Fenstern anzeigen lassen

Man kann sich auch Look&Feels selber machen.

Man kann das Look&Feel jederzeit ändern. Man sammelt sich zur Laufzeit alle installierten Look&Feels und schreibt diese dynamisch in ein Menu. Somit hat man immer alle installierten Look&Feels zur Auswahl und kann jederzeit wechseln. Natürlich ohne das Programm zu verlassen.


----------



## Reality (3. Jul 2004)

Hi Beni,
danke für die Antwort!
Ich habe mir jetzt ein Look and Feel runtergeladen, aber es ist nur eine Jar-Datei. Was soll ich damit machen?!

Liebe Grüße
Reality


----------



## Beni (3. Jul 2004)

Das JAR entweder mit einem URLClassLoader laden, oder in die ext-Ordner des JRE/SDK's werfen.
Und dann irgendwann "UIManager.setLookAndFeel" mit dem vollständigen (mit Package) Namen der Klasse, welche das Look and Feel implementiert, aufrufen.

Vielleicht hats eine Readme in dem JAR?


----------



## Reality (3. Jul 2004)

Hi Beni,
danke. Werde ich bei Gelegenheit probieren.

Liebe Grüße
Reality


----------



## mdames (3. Jul 2004)

Hey Beni,

mein SDK hat keinen ext Ordner... oder welchen meinst du?

Gruss Martin.


----------



## Beni (3. Jul 2004)

Das hier:







Müsste vorhanden sein.


----------



## mdames (3. Jul 2004)

ah,

und da kann man dann alle möglichen Lib's als .jar reinwerfen, die dann javac automatisch findet?

Greeeeets


----------



## Beni (3. Jul 2004)

Jop.

Aber die Programme funktionieren dann natürlich nur auf den PC's, welche diese Libs ebenfalls im Ordner haben...


----------

