Warum baut man eine GUI nicht in der main-Methode?

Status
Nicht offen für weitere Antworten.

Semox

Bekanntes Mitglied
Hallo

Ich arbeite gerade eine eine Java-Lektion durch und es gibt haufenweise Einzelprobleme, mit denen ich z.Z konfrontiert bin. Das neue Jahr rückt näher und mit ihm die Semesterabschlußprüfungen. Leider habe ich eine sehr wichtige Frage, welche die Erstellung einer Anwendung betrifft, die eine GUI anzeigen soll. Ich bekomme das aber nicht so schnell hin, wie gedacht. Diese Anwendung stellt ein Fensterchen dar, in dem eine ungewisse Anzahl von farbig hinterlegten Checkboxen auftreten sollen, die durchgehend numeriert werden sollen und eine von den vielen Boxen soll aktiviert sein, während die anderen es nicht sind. ;-)

Wandle hierbei ein Applet zu einer Anwendung, bei der alle wichtigen Sachen in einem Konstruktor der Art liegen:

Code:
   //Constructor using int size to display a number of Checkboxes
    public CheckAppAM(int size) {
        //What for do I need this? 

 
        //to fix the number of boxes as asked in the exercise
        // call the constructor of the superclass
        // has to be the first statement
        super("Checkboxes App");
        this.size = size;
}

Dabei erwähnte meine Professorin, daß ich einen Konstruktor verwenden soll, in dem alles Nötige initialisiert ist, was dann einmal später aufgerufen werde. Hierzu habe ich den Inhalt ihres Kommentars nicht begriffen:

Code:
    public static void main(String[] args) throws IOException {

		// do not build the GUI here
		// use the constructor for that
		// In this exercise you are also suposed to learn a systematic way to transform an applet
		// into an application. A good way for the transformation is to put what belongs to the init
		// method of an pallet into the constructor.

//lots more code....
}

:meld:

Was ich nicht verstehe ist, warum baut man die Swing oder AWT Components nicht in die main Method? Leider bin ich nach weit mehr als einer Woche noch nicht dahinter gestiegen, weil mich zudem noch Probleme mit der IDE plagen, die ich nicht so richtig in den Griff bekomme. Alles in allem etwas verzwickte Lage und die Zeit verrinnt schneller als ich die Lösungen präsentiere. Ich will den Kram ja nicht immer nur husch-schnell hinwerfen müssen, sondern den tieferen Sinn der Java Sprache verstehen, damit ich irgendwann bald meine eigenen Patterns habe, mit denen ich gute Programme schreiben kann. :###

Vielleicht kann mir jemand auch noch diese Randfrage beantworten: Weiß jemand warum es z.B. immer eine Warnung seitens Netbeans 6.5 gibt, das mich darauf hinweist innerhalb des Quellcodes eine "Add @Override annotation" einzufügen? Das ist mir nicht ganz klar.

Viele Grüße
Semox
-->...hat noch Zuversicht...
 

MyPiano

Mitglied
Hallo,

ich würde sagen, die Antwort für deine Erste Frage findet man in der Architektur von Java. die main Methode ist immer eine statische Methode und kann deshalb nicht auf Mitglieder nicht-statischer Methoden zugreifen. Daher musst du die Form immer über einen Konstruktor aufrufen.

Code:
public class Main extends JFrame {

 public static void main(String[] args) throws Exception {
       
        new Main();
     
    }
  
 public Main()
 {
  //Code zum Erstellen des Fensters
  }
 
 }

Die Override annotation ist im Grunde nur ein Hinweis für den Programmierer, das er eine bereits vorhandene Methode überschrieben hat. Warum das sinnvoll sein soll, kann ich dir auch nicht sagen, es könnte aber etwas mit der Dokumentation des Codes zu tun haben - wenn ein Javadoc erstellt wird. Es ist aber nicht notwendig und es wird keinen Syntaxerror oder Laufzeitfehler geben. Exceptions werden auch nicht geworfen. ;)

Ich hoffe ich konnte dir weiterhelfen.

Viele Grüße und guten Rutsch

MyPiano
 

0x7F800000

Top Contributor
1) weil in die main normalerweise ziemlich nichts bis auf ein paar konstruktoren und initialisierungs/start-methodenaufrufe hingehört. Wenn da wesentlich mehr als 10 zeilen drinstehen, dann muss das projekt entweder recht umfangreich sein, oder man hat irgendwas nicht gut genug gegliedert.

2) das ist für programmierer gedacht, um zB. blöde schwer aufzufindende tippfehler zu vermeiden, etwa sowas:
Code:
addMouseMotionListener(new MouseMotionAdapter(){
  //kein @Override hier 
  public void mouseMoves(MouseEvent e){
     //tjaaa... soll sich doch der programmierer jetzt stundenlang wundern, warum nix passiert
   }
}
das ist schlecht. Compiler meldet keine fehler, alles scheint in Ordnung, aber bewegen tut sich trotzdem nichts. Wenn man dagegen @Override hinzufügt, dann wird der compiler sofort meckern, dass es die methode "mouseMoves" in der Oberklasse gar nicht gibt, dann schaut man in der API nochmal nach, und stellt fest, dass die Methode "mouseMoved" heißt, und die Welt ist gerettet.
 

André Uhres

Top Contributor
Da bei der Initialisierung in der Regel Instanzvariablen angelegt werden,
muss sie im Konstruktor oder in einer nicht statischen Methode stattfinden.
Dazu kommt, daß die main auf dem Initial Thread läuft, die Gui aber auf dem Thread
laufen muss, welcher der graphischen Anzeige gewidmet ist (EventDispatchThread).
Die main muss also die Gui Initialisierung etwa so aufrufen:
Code:
SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        createAndShowGUI();
    }
}
Siehe auch: http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html
 

Semox

Bekanntes Mitglied
Hallo André, Andrey und MyPiano

Vielen Dank für Eure Antworten. In der Schnittmenge Eurer Antworten lag für mich persönlich der Weisheit letzter Schluß. Super! Jetzt habe ich das verstanden... Ein wunderbarer Jahreswechsel sei Euch beschieden...

Liebe Grüße
Semox
 

0x7F800000

Top Contributor
Semox hat gesagt.:
In der Schnittmenge Eurer Antworten lag für mich persönlich der Weisheit letzter Schluß.
Schnitt? Vielleicht doch eher Vereinigung? :D
Dass in der Leeren Menge die ganze Weißheit drin sein soll, ist schon ziemlich... Zen^^ ;)
 

Marco13

Top Contributor
Hast wohl noch nicht oft Antworten in Foren gesucht, oder? :wink: Wenn man von 5 Leuten etwas hört, ist fast immer irgendwo Mist dabei, aber der Kern, also die Schnittmenge, nämlich das, was bei allen gleich ist, ist meistens der Teil, auf den man sich am ehesten verlassen kann :wink:
 

0x7F800000

Top Contributor
naja, hier war's ja nicht wirklich so... der eine redete von klassen/instanzen-zugriffsrechten, der andere von sinnvoller gliederung des codes, der dritte von concurrency in swing. Die Schnittmenge war irgendwie recht leer^^

Ansonsten würde ich auch etwa so vorgehen, dass man alle 2-3 Elementigen Teilmengen der Menge aller antworten nimmt, davon die Schnittmenge bildet, und anschließend alle Schnittmenge wieder vereining, so sollte man was sinnvolles rausbekommen ;)
 

Illuvatar

Top Contributor
Marco13 hat gesagt.:
aber der Kern, also die Schnittmenge

Hmm... der Kern? :D Sofern ich in Algebra richtig aufgepasst hab hat der aber nix mit Schnittmengen zu tun :bae:

(Und auch mein erster Beitrag 2009 besteht mal wieder aus Unsinn. Nichts destotrotz: Gutes neues Jahr!)
 

Semox

Bekanntes Mitglied
Hallo Forum

Euch allen ein frohes neues Jahr!

Hier ist der Grund für die Nachfrage. Ich habe eine Anwendung, in der ich Checkboxes plazieren will und das nicht ging. Hier ist meine Anwendung... Das tollste ist ja, daß ich alles schön durchkommentiert habe.

Code:
package le08_checkboxen;

import java.util.Random;
import javax.swing.*;
import java.awt.*;
/**
 *
 * @author Sebastian Morkisch
 * @since 01.01.2009
 * @serial 1.0.1
 */
public class CheckApp extends JFrame {

    //Klassenattribute
    private int count = 0; //number of check boxes to add in the frame
    private Random r = new Random(); //Random number generator
    private JPanel panel;

    public CheckApp(int size) {
        //make new Frame

        //set location of window on screen
        this.setLocation(300, 200);

        //Set default close operation for the frame window
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //JPanel to hold JCheckBoxes
        this.panel = new JPanel();

        //Set the panel background as gray
        this.panel.setBackground(Color.LIGHT_GRAY);

        //Set the preferred size of panel to 300, 300
        this.panel.setPreferredSize(new Dimension(300, 300));

        //set the panel layout to flow layout, with alignment to Center
        this.panel.setLayout(new FlowLayout(FlowLayout.CENTER));

        //Set the Frame window size to 300, 300
        this.setSize(300, 300);

        //set the Frame layout to flow layout, with alignment to Center
        this.panel.setLayout(new FlowLayout(FlowLayout.CENTER));


        //Make the panel visible
        this.setVisible(true);

        //Loop to create 6 mass-boxes
        while(count < size){
        	//Create checkbox with count passed to show text as 0, 1, 2, 3, 4, 5
            JCheckBox checkbox = new JCheckBox(" " + count);

            //Set the background to a random color
            checkbox.setBackground(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

            //Add checkbox to panel
            panel.add(checkbox);

            //increate count
            count++;
        }//end while

        //add panel to the frame window
        this.add(this.panel);

        //call pack() method to pack all the GUI components
        this.pack();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        //old school crap
        //new ChecKApp_1(6);

        //better and more advanced way
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CheckApp(24);
            }
        });
    }

}

Viel Freude liebe Programmierer...

Viele Grüße
Semox
 

0x7F800000

Top Contributor
Also, es läuft, und weitere Fragen hast du nicht? gut... dann

Verbesserungsvorschläge:

-Random r wird nur lokal im Konstruktor gebraucht, es hat nichts in der liste der Member-variablen zu suchen, es ist ja keine eigenschaft deines Fensters
-bist du dir sicher, dass du "count" in Member-variblen brauchst? Möglich, aber schwer vorstellbar.
-setVisible(true) sollte man immer gaaanz zuletzt aufrufen, ansonsten bleiben manchmal manche components ungezeichnet, und tauchen erst später auf, wenn man mit der maus drüberfährt
-"xyz=S; while(xyz<A){ ... xyz++; ...}" fleht einen fast an, durch ein for(xyz=S; xyz<A; xyz++){...} ersetzt zu werden.
-JFrames werden alle gewöhnlichen components nicht direkt hinzugefügt, die kommen alle auf das contentPane, also statt "this.add(this.panel); " sollte es "this.getContentPane().add(this.panel)" heißen.
-so wie du diese invokeLater geschichte anwendest, kommt es mir klein wenig suspekt vor. Aber dazu sag ich lieber nichts, ich kenn das irgendwie nur von applets, und was da los ist, weiß ich selber nicht so recht. :roll:

so, da hast du wieder was zu basteln ;)
 

0x7F800000

Top Contributor
André Uhres hat gesagt.:
...bevor ich diesen Thread gelesen habe :wink:
den hab ich schonmal gelesen. Suspekt kam es mir deshalb vor, weil ich bei applets "nur" den Aufbau der GUI auf diese art und weise bewerkstellige (JApplet selbst exklusive) und bei fenstern den gesamten Konstruktor reinpacke (Aufbau vom Fenster inklusive). Hab mir das jetzt nochmal in der API nachgeguggt: tatsächlich, JApplet ist ja gar keine Swing-Komponente, sondern erbt direkt von applet. Aus dieser ecke kam die verwirrung. Sorry.
 

Semox

Bekanntes Mitglied
Hallo Andrey

Vielen Dank für die Verbesserungsvorschläge... Würde ich gerne ausprobieren, aber leider fehlt mir erheblich die Zeit das zu perfektionieren. Dafür nehme ich mir aber gerne Deine Tips zu Herzen und werde das in künftigen Programmen beachten.

Habe leider noch 5 fette Aufgaben aus 4 Lektionen zu bewältigen... Plus die Zeit für die Prüfungsvorbereitung nur 2 Wochen Zeit... Dabei darf ich keine Zeit mit Perfektionieren verlieren... (obwohl ich weiß Gott gern "guten" Coden schreiben möchte :D )

Viele Grüße
Semox
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rudolf Swing Baut die View die Modelebene auf oder wer? AWT, Swing, JavaFX & SWT 13
B Fensterinhalt baut sich erst bei Größenveränderung auf AWT, Swing, JavaFX & SWT 3
L Wie baut man ein SWT-Programm auf? AWT, Swing, JavaFX & SWT 4
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
U Gibt es eine Möglichkeit statt concatenate einen anderen Befehl zu nutzen? AWT, Swing, JavaFX & SWT 9
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
Lukas2904 Wie speicher ich eine Einstellung? AWT, Swing, JavaFX & SWT 1
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Zwei JTables auf eine A4-Seite mit einstellbaren Rändern AWT, Swing, JavaFX & SWT 9
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
F Variablen an eine Form binden? AWT, Swing, JavaFX & SWT 2
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
A eine Fehler AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J JavaFX Die Webview stellt eine Webseite nicht dar AWT, Swing, JavaFX & SWT 0
M JavaFX Ein Labeltext eine zeitlang anzeigen dann weiter machen AWT, Swing, JavaFX & SWT 3
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
Thallius Swing JDatePicker oder Sucht jemand eine Aufgabe? AWT, Swing, JavaFX & SWT 0
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
D AWT Das ganze GUI in eine Klasse? AWT, Swing, JavaFX & SWT 1
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M Wie kann ich eine an Apple Automator angelehnte GUI erstellen? AWT, Swing, JavaFX & SWT 1
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
G 2D-Slider bzw. eine graphische Auswahlkomponente die sich so verhält AWT, Swing, JavaFX & SWT 6
H Lust auf eine Open-Source Lösung für universelle Java Client-Technologie? AWT, Swing, JavaFX & SWT 11
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
S 5 Playlisten eine Skip() AWT, Swing, JavaFX & SWT 4
M SWT Browser nur eine Seite erlauben AWT, Swing, JavaFX & SWT 3
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
B Nach dem Öffnen des Dialogs eine Aktion ausführen. AWT, Swing, JavaFX & SWT 6
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
A Swing Text auf eine Seite an beliebigen Orten schreiben AWT, Swing, JavaFX & SWT 6
G Swing Value von einer JScrollBar auf eine andere übertragen AWT, Swing, JavaFX & SWT 2
Rudolf Swing Wie testet man am besten eine GUI? AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
F GroupableTableHeader zeigt nur eine Zeile AWT, Swing, JavaFX & SWT 4
N Swing Optimale Höhe eine JTextPanes bei festgelegter Breite bestimmen AWT, Swing, JavaFX & SWT 23
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Eine Kugel nach rechts bewegen AWT, Swing, JavaFX & SWT 5
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
M Auf einem Bild eine Markierung aufziehen AWT, Swing, JavaFX & SWT 3
R Eine Instanz von JPanel mehrfach hinzufügen AWT, Swing, JavaFX & SWT 2
B eine .jar erzeugen AWT, Swing, JavaFX & SWT 4
M In JField eine Kommazahl darstellen java.lang.NumberFormatException AWT, Swing, JavaFX & SWT 4
N Button on click eine andere Klasse aufrufen... AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben