Quellcode "splitten"

GhostfaceChilla

Bekanntes Mitglied
Hallo Leute,
da ich solangsam mit dem Programmieren immer besser vorankomm haben sich auch wieder eine Frage aufgetan:
Da das erstellen von einer grafischen Oberfläche eventuell mehrere Zeilen in anspruch nimmt, hab ich mir gedacht würde es sich anbieten den Quellcode nicht in die "Main Klasse" aufzunehmen sondern eine neue anzulegen.Nun weis ich noch das ich in C++ einfach eine neue Datei erstellen konnte und diese mit der "Main Klassei" verbinden konnte.Wie ist das in Java?Könnte ich es folgender Maßen umsetzen?:
Java:
import javax.swing.JFrame;

public class GUI{

	public static void drawWindow(){
		JFrame j= new JFrame("Ok so funktionierts ;)");
		j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		j.setSize(300, 200);
		j.setVisible(true);
	}
}

und so aufrufen:
Java:
public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GUI.drawWindow();
	}

}

Also das das so funktioniert weis ich, aber ist das auch die "feine englische Art"?
Vielen Dank schonmal 🙂

-GhostfaceChilla-
 
fast

die Main Klasse ist nur dein Start - und auch nur bei lokalen Anwendungen - in WebAnwendungen gibt es gar keine MainKlasse. Und in Bibliotheken ja auch nicht.


Dein Ansatz ist schon ganz gut - und du bist schon beinahe bei der Objektorientierung angekommen.


Java:
import javax.swing.JFrame;
 
public class Gui{

   JFrame frame;
  public Gui(){
  frame = new JFrame("Ok so funktionierts");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //hier besser .dispose();
        frame.setSize(300, 200);
        frame.setVisible(true);
}



    public void drawWindow(){
       frame.setVisible(true);
       
    }
}

Du baust dir den Frame im Konstruktor, und setzt ihn mit der drawWindow() Methode auf sichtbar.

Java:
public class MainClass {
 
    public static void main(String[] args) {

        Gui meineGui = new Gui(); //Neues Objekt der Klasse Gui erzeugen

        meineGui.drawWindow(); //Methoden dieses Objekts aufrufen
    }
 
}

du instanzierst hier also ein Objekt der Klasse Gui, und rufst auf diesem Objekt eine Methode auf.
statische Aufrufe sind nur sehr selten sinnvoll - eine sinnvolle Anwendung davon ist in der Main Methode, und in einigen UtilityKlassen (z.b. Dinge wie Math)
 
Zuletzt bearbeitet:
Viel Dank 🙂
Wenn ich jetzt z.B Labels oder Button etc. mit anzeigen möchte, kann ich das alles in der "GUI" Klasse dann machen, also nicht extra weitere Klassen anlegen wie Label, Button etc oder?

-GhostfaceChilla-
 
Zuletzt bearbeitet:
es gibt ja schon extra Klassen wie Label oder Button... die kannst du einfach verwenden...

du verwendets JFrame ja auch schon... (ich würde hier dann auch zu JButton und JLabel tendieren, damit du im Swing Kontext bleibst)


du kannst deiner JFrame instanz jederzeit Komponenten übergeben, schau dir einfach mal an, was JFrame für Methoden anbietet, und welche Methode sich zu adden einer Component eignen könnte 🙂
 
Okk.
Aber wenn ich jetzt z.B. mein komplettes GUI laden möchte, sprich dass Fenster + Label + Buttons etc, lade ich dann alles über den Konstruktor und setzte es dann mit einer Methode auf visible oder eher nicht?

-GhostfaceChilla-
 
Zuletzt bearbeitet:
du baust dir eine Gui Klasse, und in dieser GuiKlasse fügst du alle Komponenten hinzu, die du für die Gui Klasse brauchst.
Du konfigurierst auch die hinzugefügten Komponenten dort.

(Später wird dir auffallen, dass das dann ziemlich viel wird, und du wirst Dinge auslagern wollen, aber das ist dann einfach nur eine Kaskade dessen, was du hier schon machst)

und dein Ansatz ist richtig, du baust im Konstruktor alles zusammen - deswegen heisst der ja so 🙂

dir bleibt aber überlassen, ob du "setVisible()" schon im Konstruktor oder erst nach der Instanzierung aufrufst.

der JFrame ist von "aussen" - also hier in der MainMethode nicht zugreifbar, du kannst den JFrame also nicht extern sichtbar setzen.
Du bietest dafür ja deine Methode Gui#setVisible() an
 

Zurück
Oben