JButton deckt ganzes JFrame ab?

3 Antworten

Ja, das ist auch korrekt so. Der JFrame nutzt als Standardlayoutmanager das BorderLayout. Elemente, die hinzugefügt werden, werden, wenn es keine andere Angabe gibt, zunächst in die Mitte (CENTER) positioniert. Dabei nimmt sich das Element allen verfügbaren Platz.

Die Frage wäre nun: Was möchtest du konkret erreichen?


anonymus3010 
Beitragsersteller
 26.06.2019, 18:47

ich würde gerne die Buttons 100 x 100 groß haben

0
regex9  26.06.2019, 19:24
@anonymus3010

Setze einfach nur das FlowLayout und nutze setPreferredSize.

jf.setLayout(new FlowLayout());

// ...
Wahrheit.setPreferredSize(new Dimension(100, 100));

PS.: Nur Klassennamen beginnen mit einem Großbuchstaben (oder öffentliche statische Konstanten komplett in Großbuchstaben).

1
anonymus3010 
Beitragsersteller
 26.06.2019, 19:27
@regex9

Erstmal danke für den Tipp mit den Klassen aber nachdem ich das eingegeben habe geht es immer noch nicht

0
regex9  26.06.2019, 19:27
@regex9

PS.: Auch anderen Variablen sollte man bessere Namen geben (z.B. frame statt jf, um aussagekräftige Namen im Quelltext zu haben).

1
regex9  26.06.2019, 19:31
@anonymus3010
import java.awt.*;
import javax.swing.*;

public class Main {  
  public Main() {
    JFrame frame = new JFrame("Wahrheit oder Pflicht");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);

    frame.setLayout(new FlowLayout());
    
    JButton wahrheitButton = new JButton("Wahrheit");
    wahrheitButton.setPreferredSize(new java.awt.Dimension(100, 100));

    frame.add(wahrheitButton);
    frame.setSize(800, 600);
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    new Main();
  }
}
0
anonymus3010 
Beitragsersteller
 26.06.2019, 20:17
@regex9

komischer weise fkt auch das nicht, mein JButton ist immer noch das JFrame kann es sein, dass ich etwas grundlegendes umgestellt habe oder so?

0
regex9  26.06.2019, 20:27
@anonymus3010

Du weichst kein Zeichen von meinem Beispielprojekt ab (package + Klassenname einmal ausgenommen)? Vielleicht führst du einmal einen Clean Build durch.

0
anonymus3010 
Beitragsersteller
 26.06.2019, 20:30
@regex9

Ok ich probier es mal...

Danke das du so aktiv bist und dein bestes gibst :)

0

Versuche mal von dem JFrame sowie JButton das Layout auf null zu setzen.

jf.setLayout(null);
Wahrheit.setLayout(null);

regex9  26.06.2019, 18:48

Damit sollte man erst gar nicht anfangen. Ohne Layout Manager zu arbeiten ist meist bad practice.

Die zweite Anweisung ist zudem ohne Sinn.

2
Huhngut  26.06.2019, 19:21
@regex9

Offensichtlich bin ich blind ich sehe es nicht aber egal

0
Huhngut  28.06.2019, 06:57
@regex9

Ah habe erst jetzt bemerkt das du nur zu einer Antwort kommentiert hast und die 2te Anweisungen in der Frage gesucht

0

Dann musst du ein anderen layoutmanager oder gar keinen verwenden Bitte schreib Deine variablen klein

Am einfachsten wäre jf.setLayout (null);

Wahrheit.setBounds (x,y,breite,höhe);

Ich kann dir gerne falls du discord hast bei deinem Projekt helfen wir haben auch einen Server für jüngere programmier Anfänger falls du Lust hast


regex9  26.06.2019, 19:26

Wie gesagt, ist das Null-Layout keine gute Option. Es ist inflexibel. Genauso wie setBounds. Das habe ich dir nun schon oft genug geschrieben. Dem FS sollte man fair gegenüber sein und dazu sagen, dass du selbst noch Anfänger in Swing bist.

1
Huhngut  27.06.2019, 07:06
@regex9

Werfe ich in Zukunft gerne sagen allerdings habe ich noch keinen layoutmanager gefunden der ein null Layout Ersetzen kann

0
anonymus3010 
Beitragsersteller
 26.06.2019, 19:35

jo würde ich

0
Huhngut  27.06.2019, 22:25
@anonymus3010

Lol mein Kommentar ist damals nicht durchgekommen deswegen kommst du nich

Dann erstmal sorry für die mehr oder weniger Verspätung

https://discord.gg/pTJHwDR

Ich muss dir aber erst rechte geben sonst kannst du nichts machen also sag am besten mal bescheid

0