JButton deckt ganzes JFrame ab?
Wenn ich ein JButton erzeuge, bedeckt dieser das ganze JFrame. Normalerweise hat es immer funktioniert?!
package pack;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Gui {
JButton Pflicht, Wahrheit;
JFrame jf = new JFrame();
public Gui() {
jf = new JFrame();
jf.setSize(800, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
jf.setTitle("WahrheitoderPflicht");
Wahrheit = new JButton("Wahrheit");
jf.add(Wahrheit);
}
}
3 Antworten
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
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?
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
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).
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Erstmal danke für den Tipp mit den Klassen aber nachdem ich das eingegeben habe geht es immer noch nicht
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
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();
}
}
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
komischer weise fkt auch das nicht, mein JButton ist immer noch das JFrame kann es sein, dass ich etwas grundlegendes umgestellt habe oder so?
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Du weichst kein Zeichen von meinem Beispielprojekt ab (package + Klassenname einmal ausgenommen)? Vielleicht führst du einmal einen Clean Build durch.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Versuche mal von dem JFrame sowie JButton das Layout auf null zu setzen.
jf.setLayout(null);
Wahrheit.setLayout(null);
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Damit sollte man erst gar nicht anfangen. Ohne Layout Manager zu arbeiten ist meist bad practice.
Die zweite Anweisung ist zudem ohne Sinn.
![](https://images.gutefrage.net/media/user/Huhngut/1568027905111_nmmslarge__0_0_199_199_26ebd64023f617de16e3891dae8c68ce.jpg?v=1568027905000)
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
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/Huhngut/1568027905111_nmmslarge__0_0_199_199_26ebd64023f617de16e3891dae8c68ce.jpg?v=1568027905000)
Lol mein Kommentar ist damals nicht durchgekommen deswegen kommst du nich
Dann erstmal sorry für die mehr oder weniger Verspätung
Ich muss dir aber erst rechte geben sonst kannst du nichts machen also sag am besten mal bescheid
![](https://images.gutefrage.net/media/user/Huhngut/1568027905111_nmmslarge__0_0_199_199_26ebd64023f617de16e3891dae8c68ce.jpg?v=1568027905000)
ich würde gerne die Buttons 100 x 100 groß haben