Java Fenster , warum verändert es Größe nicht?

3 Antworten

So neuer Versuch:

Du könntest ein sogenanntes NullLayout nutzen und deine Positionen selbst „managen“.

Setze dafür das Layout für dein Content Pane:

contentPane.setLayout(null);

Dann kannst du deinen JButton mit folgender Zeile beliebig einfügen:

contentPane.add(DEIN_JBUTTON);
DEIN_JBUTTON.setBounds(x, y, width, height);

Für x, y, width und height bitte meine Erklärung unten anschauen.

Wichtig!: dein Content Pane (in deinem Beispiel southPanel genannt) braucht auch eine eigene Größe, natürlich auch wieder mit

contentPane.setBounds(x, y, width, height);

Dein kompletter Code sieht dann komplett aus:

public DeineKlasse extends JFrame {

    public DeineKlasse {
        setBounds(100, 100, 1280, 720);
        setLayout(null);
        JPanel contentPane = new JPanel();
        contentPane.setBounds(0, 420, 1280, 300);
        add(contentPane);

        JButton button = new JButton();
        button.setBounds(20, 600, 120, 100);
        contentPane.add(button);
    }

}

Ich habe hierbei nicht auf JavaConventions geachtet und für Rechtschreibfehler komme ich nicht auf. Konnte ebenfalls den Code nicht testen, weil ich immer noch am Handy bin.

Sorry & viel Glück😇

Woher ich das weiß:eigene Erfahrung
fastfurry 
Fragesteller
 11.06.2022, 00:10

Super, ich probiere gleich mal. Danke dir!

1

Setze nicht nur vom Layout deine Größe, sondern direkt vom JFrame.

Da du vom JFrame erbst, könntest du in deinem Konstruktor folgendes schreiben:

setBounds(x, y, width, height);

Sprich bei einem Fenster, dass oben links sich öffnen soll mit einer „HD-Größe“ setze für:

x -> 100
y -> 100
width -> 1280
height -> 720

Am Ende sollte dein Konstruktor vor deinem southPanel das folgende stehen haben:

// KlassenCode
public DeinKonstruktor {
    setBounds(100, 100, 1280, 720);
    // Weiterer Code
}

Nochmal sorry, falls ich ein paar Logikfehler hier drinnen habe und ggf. die Werte getauscht sind: bin gerade am Handy. Ich wünsche dir Glück!

KOMMANDO ZURÜCK: Habe die Frage nicht vollständig gelesen

Woher ich das weiß:eigene Erfahrung
PlugDev  10.06.2022, 23:53

Wartet kurz, ich schreibe gleich eine korrekte Antwort, sorry 🥹

0
fastfurry 
Fragesteller
 10.06.2022, 23:55

Ah ja ,bezieht sich jetzt nicht auf meine Frage, aber trotzdem gut zu wissen. Danke dir.

Hab auch nochmal drüber geschaut:

this.add(southPanel, BorderLayout.SOUTH);

durch die Zeile kann ich nicht wehrlos mein Button platzieren, nur im Süden. Die größe lässt sich gut anpassen.

0
PlugDev  11.06.2022, 00:07
@fastfurry

Sorry habe jetzt eine ausführliche Antwort zu deinem Button-Problem oben geschrieben. Habe mich ernsthaft eben verlesen, sorry 🥹

1
fastfurry 
Fragesteller
 11.06.2022, 00:09
@PlugDev

Kein Problem, freu mich mehr neues zu lernen ;) Vielen Dank für die Antwort!

1

In der ersten Zeile steht im Kommentar "flowLayout". Dann wird die Position der enthaltenen Komponenten von der layout engine festgelegt. Meine Vermutung.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer
fastfurry 
Fragesteller
 10.06.2022, 23:18

ja das ist mein Kommentar ;) hab gedacht ein Panel hat als Standard das Flowlayout

0
fastfurry 
Fragesteller
 10.06.2022, 23:24

hab jetzt einfach das Layout geändert , danke für den Tipp :)

southPanel.setLayout(new BorderLayout());

1