Swing Button hat falsche Größe

Hans Gerber

Mitglied
Guten Tag,

hoffe ich bin hier im richtigen Unterforum.

Ich versuche grade wieder in java reinzukommen (habe damals auch nur Konsolen-Java programmiert) und schaue mir grade Swing an. Ich habe ein Fenster gebaut mit einem Schließen-Button. Ich setzte das Fenster auf 300 x 300 und rufe für den button seperat die methode zum setzen der Größe (allerdings mit anderen Werten) auf. Dennoch ist und bleibt der Button genau so groß wie das Fenster .... Ich finde das problem grade nicht wirklich und wollte daher hier mal fragen.

Hier mein bisheriger Code:

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

public class SwingTest {
   
   public static void main(String[] args){
       
       new appFrame("Test Fenster");
   }
}

class appFrame extends JFrame {
   
   public appFrame(String title) {
       
       super(title);
       
       addWindowListener(new WindowAdapter(){
           
           public void windowClosing (WindowEvent e) {

               System.exit (0);
           }
       });
       
       add(new appExitButton(20, 20, 100, 40));
       
       setSize(300, 300);
       setVisible(true);
   }
}

class appExitButton extends JButton {
   
   public appExitButton(int bX, int bY, int bW, int bH){
       
       super("Close");
       
       addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent ae){
               
               System.exit (0);
           }
       });
       setSize(bW, bH);
       
   }
}

Danke für Hinweise und Tipps
 

Flown

Administrator
Mitarbeiter
Wenn du deinen Button selbst verteilen möchtest, dann nimm das null-Layout:
Java:
class SwingTest {
  public static void main(String[] args){
    new appFrame("Test Fenster");
  }
}

class appFrame extends JFrame {
  
  public appFrame(String title) {
    super(title);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setLayout(null);
    add(new appExitButton(20, 20, 100, 40));
    setSize(300, 300);
    setVisible(true);
  }
}

class appExitButton extends JButton {
  
  public appExitButton(int bX, int bY, int bW, int bH){
    super("Close");
    addActionListener(ae -> System.exit (0));
    setLocation(bX, bY);
    setSize(bW, bH);
  }
}
 

Flown

Administrator
Mitarbeiter
Paar Verbesserungsvorschläge:
- Composition over inheritance
- Klassennamen werden in UpperCamelCase geschrieben
- null-Layout is evil
 

Hans Gerber

Mitglied
zu Antwort #2 : danke das hat erstmal geholfen :) (schaue mir nun auch die existierenden Layout Typen an)

zu Antwort #3:

- Habe mir das Prinzip mal angeschaut und versuche grade es auf mein Besipiel anzuwenden. Die Vererbung der JFrame und JButton Klassen macht doch eigentlich Sinn, da ich ja alle Methoden dieser Klassen in meinen angepassten Varianten verwenden will. Oder beziehst du den Vorschlag auf das Einfügen des Buttons zum Fenster (sollte der button quasi als Parameter für den Konstruktor übergeben werden?)

- stimmt, kannte ich auch von anderen Sprachen und hab es hier einfach vergessen :)

- verstehe (ich vermute das liegt daran, dass wenn im Nachhinein Änderungen gemacht werden man potenziell viel per hand nachziehen muss)

Würde mich nochmal über Feedback freuen
Vielen Dank :)
 

Thallius

Top Contributor
Zu 3:

Du benutzt die Funktionalität des JFrame aber du erweiterst sie nicht. Deshalb wäre es besser du deklarierst einfach ein JFrame anstatt davon zu erben. Erben tut man nur, wenn man die Klasse um eigene Methoden erweitet was du aber nicht vor hast.

Das Problem des NullLayouts ist, dass du den Kunden zwingst genau deine Frame Größe zu benutzen. Das ist einfach mehr so 70er Jahre Stil wo man immer ein 80x60 Display hatte. Heute sollte ein UI immer Resizable sein. Sprich ich kann das Fenster auf meine persönliche Wohlfühlgrösse ziehen und der Inhalt passt sich dann an diese Größe an.

Gruß

Claus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
4 Button mit Fensteraufruf mit AWT oder Swing Java Basics - Anfänger-Themen 10
A Suche bestimmten Swing-Button Java Basics - Anfänger-Themen 2
J Wie ordne ich Swing-Elementen (checkbox, button, etc.)? Java Basics - Anfänger-Themen 2
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
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
B Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
J Java GUI in Swing und das MVC Paradigma Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben