Verständnisproblem zu Swing und Methoden

byron1778

Aktives Mitglied
Hallo Forum!

Ich habe ein Verständnisproblem bzgl. Swing, Methoden, Konstruktoren und deren Schreibweise.

Ich weiss was Konstruktoren u. Methoden sind.
Aber die Sschreibweise in Swing verwirrt mich einfach!

(Folgende Bsp habe ich übernommen!)

Z. B: folgendes Bsp:

Code:
import javax.swing.*;
import java.awt.*;

public class HelloWorld extends JFrame {
        static JLabel lbText = new JLabel("Hallo Welt",0);

	        HelloWorld() {
	                super("Titel");
			getContentPane().add(lbText);
	                setSize(10,20);
	                pack();
	                setVisible(true);
	        }

	public static void main ( String[] argv) {
                new HelloWorld();
        }
}

Wieso ist es möglich im Konstruktor eine Methode (.add()) aufzurufen?
Warum kann ich hier in der main Klasse den grössten Teil weglassen?

Ich dachte mir lt. Bücher baut man eine Klasse so auf:

class (instanziieren mit xy z = new xy)
konstruktor od default konstruktor
methoden

Hier wird aber alles ineinander verschachtelt.

Genauso verwirrt mich diese Schreibweise:

Code:
import javax.swing.*;
 
class HelloWorldSwing {
    public static void main(String[] args) {
        // Verpacke den auszuführenden Quellcode in ein eigenes
        // Runnable-Objekt, um diesen nachher im Event Dispatching
        // Thread ausführen zu können
        Runnable guiCreator = new Runnable() {
            public void run() {
                // Erstellt das Swing-Fenster
                JFrame fenster = new JFrame("Hallo Welt mit Swing");
                // Swing anweisen, das Programm zu beenden, wenn das Fenster
                // geschlossen wird
                fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
                // Fügt den "Hallo Welt"-Text hinzu
                JLabel label = new JLabel("Hallo Welt");
                fenster.getContentPane().add(label);
 
                // Zeigt das Fenster an
                fenster.setSize(300, 200);
                fenster.setVisible(true);
            }
        };
 
        // Führe den obigen Quellcode im Event-Dispatch-Thread aus
        SwingUtilities.invokeLater(guiCreator);
    }
}

Hier wird in einer Methode einer Klasse new aufgerufen.
Ich war es von Konsolenprogrammen gewöhnt, dass in der main Methode mit new alles instanziiert wird.

Diese ganze Schreibweise kommt mir komplett spanisch vor.
Kann man mir sie vll. jemand näher erläutern bzw. wo ich eine wirklich gute Doku finde, wo genau diese Fragen näher beleuchtet werden.

Danke Euch schon mal vielmals!

lG
 

eRaaaa

Top Contributor
Das hat nichts direkt mit Swing zu tun. Bei deinem ersten Code, kannst du diese Methoden aufrufen, da du diese erbst [c]extends JFrame[/c].
(Vererbung)

Bei deinem zweiten Code handelt es sich um eine anonyme innere Klasse (klick)
 

byron1778

Aktives Mitglied
Danke Dir vielmals mal für die Antworten.
Leider habe ich aber noch ein paar dumme Fragen!

Ok, dass ich die Methoden erbe verstehe ich!
Ist mir einleuchtend, aber seit wann ruft man Methoden im Konstruktor auf?
Im Konstruktor werden ja "nur" die ganzen Sachen nur zugewiesen und initialisiert?!
 

eRaaaa

Top Contributor
Ist mir einleuchtend, aber seit wann ruft man Methoden im Konstruktor auf?
Im Konstruktor werden ja "nur" die ganzen Sachen nur zugewiesen und initialisiert?!

Schon immer *g*
Ne, also klar kannst du Methoden im Konstruktor aufrufen.
Was du wahrscheinlich jetzt meinst ist, dass du nur so etwas kennst:
Java:
class Person {
	private String name;

	public Person(String name) {
		this.name = name; //zuweisung
	}

	public void setName(String name) {
		this.name = name;
	}
}

....

aber man kann da ja genau so gut auch den Setter aufrufen:
Java:
	public Person(String name) {
		this.setName(name); 
	}

Grob gesagt, du kannst eig. im Konstruktor alles machen, was du woanders(Block) auch machen kannst ;D (rein theoretisch, ob das immer so schön ist, ist ne` andere Frage)
 
Zuletzt bearbeitet:

bandy

Bekanntes Mitglied
Naja, Konstruktor ist ja auch nur eine Methode vom Typ der Klasse. Und wenn du dort eine Methode aufrufst, dann ist halt rekursiver Aufruf.
 

byron1778

Aktives Mitglied
Richtig, ich kenne die Sachen nur so, wie du sie geschrieben hast!
Deswegen verstehe ich diese Schreibweise überhaupt nicht.

Kann man dann auch Berechnungen im Konstruktor durchführen, da ja Methoden, so wie ich sie kenne, nicht nötig sein dürften?
Könnte ich im Konstruktor dann mittels println..) etwas ausgeben?

Ok, danke dir vielmals!
Wenn das so ist, wie es ist, dann akzeptiere ich das :)
 

Wortraum

Bekanntes Mitglied
Kann man dann auch Berechnungen im Konstruktor durchführen, da ja Methoden, so wie ich sie kenne, nicht nötig sein dürften?
Könnte ich im Konstruktor dann mittels println..) etwas ausgeben?
Du kannst Dir den Konstruktor erst einmal wie eine normale Methode ohne Rückgabewert vorstellen. Der Unterschied ist der, daß ein Konstruktor immer beim Erstellen eines Objektes ausgeführt wird, während eine normale Methode irgendwo aufgerufen werden muß.

Schreibst Du nun in den Konstrutkor ein System.out.println rein, dann wird jedesmal etwas ausgegeben, wenn Du ein neues Objekt von der Klasse erzeugst. So etwas kann sehr nützlich sein, um beispielsweise einen Fehler zu finden und zu schauen, ob überhaupt ein Objekt erstellt wird.

Natürlich kannst Du im Konstruktor auch etwas berechnen oder Dateien schreiben, aber bedenke dabei immer, daß das passiert, wenn ein Objekt erstellt wird! Meist will man nicht, daß beim Erzeugen eines Objektes viel passiert. Es ist zudem klarer, daß etwas berechnet wird, wenn man die Methode calculate() aufruft, als wenn man einfach nur ein Objekt erstellt. Konstruktoren haben außerdem keine Rückgabewerte.

Es kann auch nützlich sein, im Konstruktor etwas zu prüfen. Ist die übergebene Datei überhaupt vorhanden? Ist der übergebene Wert positiv? Konstruktoren können daher allerlei Ausnahmen werfen wie FileNotFoundException oder IllegalArgumentException.
 

byron1778

Aktives Mitglied
Danke Euch für die Erklärungen, soweit ist mir vieles diesbezüglich klarer geworden!
Ein paar letzte Fragen hätte ich noch:

1) Welchen Vor oder Nachteil hat es, wenn ich ein getContentPane().add(lbText); bereits im Konstruktor ausführe?
2) Macht man das nur, weil man schreibfaul ist u. nicht erst das Ganze nach dem Schema

class
konstruktor
methode

aufbauen will?
3) Oder hat es doch einen gewichtigeren Grund?

4) Wäre es überhaupt möglich, das Ganze nach meinem obigen Prinzip zu gestalten?

Danke Euch vielmals!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 22
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
D Verständnisproblem Java Basics - Anfänger-Themen 2
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
H Polymorphie Verständnisproblem Vererbung/Polymorphie Java Basics - Anfänger-Themen 4
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
V Verständnisproblem Java Basics - Anfänger-Themen 5
V Arrays-verständnisproblem Java Basics - Anfänger-Themen 4
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
S Klassen Verständnisproblem Konstruktor Java Basics - Anfänger-Themen 7
I e.getMessage(); - Verständnisproblem Java Basics - Anfänger-Themen 6
lesni Vererbung Vererbung - Verständnisproblem Java Basics - Anfänger-Themen 2
M OOP Polymorphie/Vererbung Verständnisproblem Java Basics - Anfänger-Themen 2
J Verständnisproblem Methoden-Kettung Java Basics - Anfänger-Themen 3
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
E Verständnisproblem Typkonvertierung Java Basics - Anfänger-Themen 4
S OOP Verständnisproblem Umsteiger Java Basics - Anfänger-Themen 22
C Array Verständnisproblem Java Basics - Anfänger-Themen 3
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
L Eclipse verlangt "{" nach ";"... Verständnisproblem Java Basics - Anfänger-Themen 5
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
M Verständnisproblem bei Ternären Operanten bzw. Bedingungsoperator Java Basics - Anfänger-Themen 8
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
M Verständnisproblem Threads Java Basics - Anfänger-Themen 7
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
A Postinkrement-Verständnisproblem Java Basics - Anfänger-Themen 12
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
1 Verständnisproblem mit Foreach Java Basics - Anfänger-Themen 4
B Verständnisproblem bei Vererbung Java Basics - Anfänger-Themen 3
W generisches Programmieren - Verständnisproblem Java Basics - Anfänger-Themen 4
A Verständnisproblem Nr 2 Java Basics - Anfänger-Themen 14
A Verständnisproblem Java Basics - Anfänger-Themen 6
A Array Verständnisproblem Java Basics - Anfänger-Themen 8
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
M Verständnisproblem mit der Klasse Thread Java Basics - Anfänger-Themen 10
N BufferedReader Verständnisproblem Java Basics - Anfänger-Themen 12
G Verständnisproblem: Code kompelieren und interpretieren Java Basics - Anfänger-Themen 3
S Polymorphie Verständnisproblem Java Basics - Anfänger-Themen 4
G Verständnisproblem Türme von Hanoi Java Basics - Anfänger-Themen 4
G Verständnisproblem Serverinput einlesen. Java Basics - Anfänger-Themen 4
J Array und Schleifen Verständnisproblem Java Basics - Anfänger-Themen 25
G Verständnisproblem Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
S SelectionListener + repaint().Verständnisproblem ;) Java Basics - Anfänger-Themen 7
V Verständnisproblem mit Abstrakten zu Konkreten Klassen Java Basics - Anfänger-Themen 7
A Problem mit der Stringgrösse, bzw Verständnisproblem? Java Basics - Anfänger-Themen 14
A Verständnisproblem mit ScrollPanel Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
T Verständnisproblem mit equals() Java Basics - Anfänger-Themen 4
N datei byte für byte auslesen (verständnisproblem) Java Basics - Anfänger-Themen 2
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
D Verständnisproblem Java Basics - Anfänger-Themen 6
S for Schleifen: Verständnisproblem Java Basics - Anfänger-Themen 15
T Vererbung von Attributen und Methoden, Verständnisproblem Java Basics - Anfänger-Themen 4
bernd while-Schleife: Verständnisproblem Java Basics - Anfänger-Themen 7
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
G GridBagLayout: Verständnisproblem Java Basics - Anfänger-Themen 5
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben