Swing Größe automatisch anpassen

LyncH159

Mitglied
Hallo!
Ich möchte meine GUI bzw. mein Swing automatisch der Größe meines Bildschirms anpassen.
Code:
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
Bei setExtendedState ist mein JFrame leider nur oben links in der Ecke und nicht über den gesamten Bildschirm.
 

truesoul

Top Contributor
Hallo.

Also eigentlich sollte es funktionieren.

Beispiel:

Java:
JFrame frame = new JFrame("FrameDemo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Label("TEST"), BorderLayout.CENTER);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.pack();

frame.setVisible(true);

Vielleicht hast du ein wenig Code?

Ansonsten: https://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html

Oder damit:

Java:
JFrame frame = new JFrame("FrameDemo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Label("TEST"), BorderLayout.CENTER);
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

Toolkit tk = Toolkit.getDefaultToolkit();
int xSize = ((int) tk.getScreenSize().getWidth());
int ySize = ((int) tk.getScreenSize().getHeight());
System.out.println(xSize);
frame.setPreferredSize(new Dimension(xSize, ySize));

frame.pack();

frame.setVisible(true);
 

LyncH159

Mitglied
Mein Code JFrame Code

Code:
        frame = new JFrame();
        frame.getContentPane().setBackground(Color.LIGHT_GRAY);
        frame.getContentPane().setForeground(Color.WHITE);
        frame.setBounds(550, 210, 634, 503);
        frame.setUndecorated(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);


        frame.setVisible(true);

Habe das soweit eingefügt dein Vorschlag, aber es ist immer noch oben Links klein gerendert. Es kommt zwar im Vollbild aber wie gesagt nur oben rechts!
 

truesoul

Top Contributor
Mein Code JFrame Code

Code:
        frame = new JFrame();
        frame.getContentPane().setBackground(Color.LIGHT_GRAY);
        frame.getContentPane().setForeground(Color.WHITE);
        frame.setBounds(550, 210, 634, 503);
        frame.setUndecorated(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);


        frame.setVisible(true);

Habe das soweit eingefügt dein Vorschlag, aber es ist immer noch oben Links klein gerendert. Es kommt zwar im Vollbild aber wie gesagt nur oben rechts!

Wo ist denn: setExtendedState in dem Code?
 

LyncH159

Mitglied
Code:
        frame = new JFrame();
        frame.getContentPane().setBackground(Color.LIGHT_GRAY);
        frame.getContentPane().setForeground(Color.WHITE);
        frame.setBounds(550, 210, 634, 503);
        frame.setUndecorated(true);
        frame.getContentPane().add(new Label("TEST"), BorderLayout.CENTER);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

Tet.png
 

truesoul

Top Contributor
Ja mach mal das frame.getContentPane().setLayout(null); weg. Dann sollte es funktionieren. Aber du hast noch immer nicht dein Code gezeigt, falls es nicht klappen sollte.
 

LyncH159

Mitglied
Code:
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Startansicht window = new Startansicht();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Startansicht() {
        initialize();
    }

    private void initialize() {
        frame = new JFrame();
        frame.getContentPane().setBackground(Color.LIGHT_GRAY);
        frame.getContentPane().setForeground(Color.WHITE);
        frame.setBounds(550, 210, 634, 503);
        frame.setUndecorated(true);
        frame.getContentPane().add(new Label("TEST"), BorderLayout.CENTER);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
       
        textField_1 = new JPasswordField();
        textField_1.setBounds(306, 216, 280, 32);
        textField_1.setOpaque(false);
        textField_1.setBorder(javax.swing.BorderFactory.createEmptyBorder());
        frame.getContentPane().add(textField_1);
        textField_1.setColumns(10);
       
        textField = new JTextField();
        textField.setColumns(10);
        textField.setOpaque(false);
        textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
        textField.setBounds(306, 113, 280, 32);
        frame.getContentPane().add(textField);
       
        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setIcon(new ImageIcon("C:\\Users\\Fabio\\Desktop\\GUIII.png"));
        lblNewLabel.setBounds(0, 0, 279, 503);
        frame.getContentPane().add(lblNewLabel);
       
        JLabel lblNewLabel_1 = new JLabel("X");
        lblNewLabel_1.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                System.exit(0);               
            }
        });
        lblNewLabel_1.setForeground(Color.RED);
        lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 18));
        lblNewLabel_1.setBounds(616, 0, 18, 22);
        frame.getContentPane().add(lblNewLabel_1);
       
        JButton btnNewButton = new JButton("Einloggen");
        btnNewButton.setBackground(SystemColor.textHighlight);
        btnNewButton.setForeground(new Color(47, 79, 79));
        btnNewButton.setBounds(300, 350, 105, 37);
        frame.getContentPane().add(btnNewButton);
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if(textField_1.getText().isEmpty() == true && textField.getText().isEmpty() == true) {
                        JOptionPane.showMessageDialog(frame,"Bitte geben Sie Ihren Spielernamen und Ihr Passwort ein!","Fehlende Eingabe", JOptionPane.WARNING_MESSAGE);   

                }
                else if(textField_1.getText().isEmpty() == true) {   
                    JOptionPane.showMessageDialog(frame,"Bitte geben Sie Ihr Passwort ein!","Fehlende Eingabe", JOptionPane.WARNING_MESSAGE);
                }
                else if(textField_1.getText().isEmpty() == true){       
                    JOptionPane.showMessageDialog(frame,"Bitte geben Sie Ihren Spielernamen ein!","Fehlende Eingabe", JOptionPane.WARNING_MESSAGE);       
               
                }
                    else{
                    str = textField.getText();
                    new DesignNew();
                    frame.dispose();}
   
                }});
       
        JButton btnRegistrieren = new JButton("Registrieren");
        btnRegistrieren.setForeground(new Color(178, 34, 34));
        btnRegistrieren.setBackground(SystemColor.textHighlight);
        btnRegistrieren.setBounds(434, 350, 105, 37);
        frame.getContentPane().add(btnRegistrieren);
        btnRegistrieren.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                frame.dispose();
                }
            });
       
       
        JLabel lblAlsGastFortfahren = new JLabel("Als Gast fortfahren...");
        lblAlsGastFortfahren.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                frame.dispose();
            }
        });
        lblAlsGastFortfahren.setFont(new Font("Tahoma", Font.BOLD, 11));
        lblAlsGastFortfahren.setForeground(Color.BLUE);
        lblAlsGastFortfahren.setBounds(368, 419, 119, 14);
        frame.getContentPane().add(lblAlsGastFortfahren);
       
        JLabel lblSpielername = new JLabel("SPIELERNAME");
        lblSpielername.setBounds(300, 92, 105, 14);
        frame.getContentPane().add(lblSpielername);
       
        JLabel lblPasswort = new JLabel("PASSWORT");
        lblPasswort.setBounds(300, 191, 105, 14);
        frame.getContentPane().add(lblPasswort);
       
        JLabel ZiehLabel = new JLabel();
        ZiehLabel.setBackground(SystemColor.control);
        ZiehLabel.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                pX = e.getX();
                pY = e.getY();
            }
        });
        ZiehLabel.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                frame.setLocation(frame.getLocation().x + e.getX() - pX,
                frame.getLocation().y + e.getY() - pY);
            }
        });
        ZiehLabel.setBounds(0, 0, 634, 503);
        frame.getContentPane().add(ZiehLabel);
       
        JSeparator separator = new JSeparator();
        separator.setForeground(new Color(255, 255, 255));
        separator.setBackground(new Color(255, 255, 255));
        separator.setBounds(300, 143, 290, 2);
        frame.getContentPane().add(separator);
       
        JSeparator separator_1 = new JSeparator();
        separator_1.setForeground(Color.WHITE);
        separator_1.setBackground(Color.WHITE);
        separator_1.setBounds(300, 246, 290, 2);
        frame.getContentPane().add(separator_1);
        frame.setVisible(true);

    }


Habe frame.getContentPane().setLayout(null); entfernt, funktioniert leider nicht !
 

truesoul

Top Contributor
Also du verwendest kein Layout und das solltest du ändern:
https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Du fügst alle Komponenten dem JFrame hinzu, besser du fügst es ein JPanel hinzu, und diesem dann dem JFrame.

Und wenn du kein Layout haben willst, dann müssen die setBounds natürlich korrekt sein.

Also Beispiel:

Java:
// 616 ist Horizontal
// 0 ist Vertical
lblNewLabel_1.setBounds(616, 0, 18, 22);

// Bei einer Auflösung von 1920x1080 müsste dann was stehen?

EDIT: Du könntest natürlich Code verwendet den ich als Beispiel hier gepostet habe.
 
Zuletzt bearbeitet:

LyncH159

Mitglied
Also du verwendest kein Layout und das solltest du ändern:
https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Du fügst alle Komponenten dem JFrame hinzu, besser du fügst es ein JPanel hinzu, und diesem dann dem JFrame.

Und wenn du kein Layout haben willst, dann müssen die setBounds natürlich korrekt sein.

Also Beispiel:

Java:
// 616 ist Horizontal
// 0 ist Vertical
lblNewLabel_1.setBounds(616, 0, 18, 22);

// Bei einer Auflösung von 1920x1080 müsste dann was stehen?

EDIT: Du könntest natürlich Code verwendet den ich als Beispiel hier gepostet habe.

Ein neues Layout festzusetzen, wird wahrscheinlich mit Stundenlanger Arbeit verbunden sein. Ich habe schon mehrere Klassen erstellt und deshalb muss ich auf eine Alternative zurückgreifen.
Also müsste ich es immer bei setBounds manuell anpassen?
 

truesoul

Top Contributor
Also müsste ich es immer bei setBounds manuell anpassen?

Nein müsstest du nicht, aber anhand der Auflösung müsste für jedes Element die richtige Position gesetzt sein.
Verwenden kannst du z. B Toolkit.getDefaultToolkit().

Ich nehme mal an das Kreuz soll oben rechts sein? Bei einer Auflösung von 1920X1080 müsste dann setBounds(width-20, 0, 18, 22) lauten.

Usw.
 

LyncH159

Mitglied
Nein müsstest du nicht, aber anhand der Auflösung müsste für jedes Element die richtige Position gesetzt sein.
Verwenden kannst du z. B Toolkit.getDefaultToolkit().

Ich nehme mal an das Kreuz soll oben rechts sein? Bei einer Auflösung von 1920X1080 müsste dann setBounds(width-20, 0, 18, 22) lauten.

Usw.
Ich kann dir da nicht richtig folgen.
Code:
        frame = new JFrame();
        frame.getContentPane().setBackground(Color.LIGHT_GRAY);
        frame.getContentPane().setForeground(Color.WHITE);
        frame.setBounds(20, 0, 18, 22);
        frame.setUndecorated(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

habe es jetzt so übernommen und jetzt sehe ich das JFrame garnicht mehr
 

truesoul

Top Contributor
Für dein X zum Beispiel:

Java:
Toolkit tk = Toolkit.getDefaultToolkit();
int xSize = ((int) tk.getScreenSize().getWidth());
int ySize = ((int) tk.getScreenSize().getHeight());
.....
// Bei einer Auflösung von 1920 x 1080 wäre dann xSize 1900
lblNewLabel_1.setBounds(xSize - 20, 0, 18, 22);

So jetzt sollte das X rechts oben sein. Und du willst sicher deine Textfelder zentriert haben?
Dann musst du anhand xSize und ySize die richtige Position errechnen. Dabei solltest du die Größe jedes Elements beachten.
 

Neumi5694

Top Contributor
Du machst dir das aber auch unnötig kompliziert ...
Layoutmanager zu verwenden, ist das erste, das man mit Swing lernen sollte.
Dem Frame Komponenten hinzuzufügen macht deinen Code sehr starr. Besser ist wirklich, ein Panel als Komponente zu verwenden und dieses Panel dann dem Frame hinzuzufügen.
Damit es automatisch auf die Größe des Frame skaliert, verwendest du für die Content-Pane des Frames ein BorderLayout und fügst das Panel mit der Eigenschaft CENTER hinzu. Dann musst du gar nichts manuell machen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing Größe von JTextField und JLabel ändern AWT, Swing, JavaFX & SWT 6
I Größe von Swing-Objekten ändern AWT, Swing, JavaFX & SWT 13
S Repaint Probleme bei Swing (JScrollPane größe ändern) AWT, Swing, JavaFX & SWT 15
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben