JFrame - Verkleinern

_Truck_

Erfahrenes Mitglied
Huhu ihr JavaFreaks,

Ich habe ein JFrame, dass ich anfangs mit setExtendedState(JFrame.MAXIMIZED_BOTH) maximiere!
Wenn ich nun oben auf 'Verkleinern' gehe, dann verkleinert sich vollständig, sodass nur noch die blaue Fensterleiste oben angezeigt wird !

Ich möchte diese Funktion beibehalten, allerdings möchte ich mein JFrame bei dem Klick auf Verkleinern ein bestimmte Größe zuweisen!

Oder wie kann ich das Problem noch beheben ?


Danke im Voraus,
Gruß Truck
 
Hallo,

du könntest natürlich, wenn du das Fenster anlegst, eine Größe zuweisen. Sonst würde ich dir mal empfehlen, dir den WindowListener anzuschauen. Dieser hat Methoden, die auf Actionen des Fensters reagieren, unter anderem auch maximieren und minimieren.

MFG

zEriX
 
Schau dir das mal an:

Java:
public static void main(String[] args) {
		// Create and set up the window.
		JFrame frame = new JFrame("Test");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(200, 200);
		frame.setExtendedState(Frame.MAXIMIZED_BOTH);
		frame.addWindowStateListener(new WindowStateListener( ) {

			@Override
			public void windowStateChanged(WindowEvent evt) {
				System.out.println("Normal = "
						+ (evt.getNewState( ) == Frame.NORMAL));
			}
		});

		// Add content to the window.
		frame.add(new JButton("Test"));

		frame.setVisible(true);
	}

Wie zerix schon sagte, wenn eine Größe gesetzt ist dann funktioniert das ganze auch. Ansonsten kannst du mit dem StateListener auch abfragen wann verkleinert wird (Frame.Normal).
 
Schau mal hier
Java:
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;

import javax.swing.JFrame;

public class JFrameExample
    extends JFrame
{

 
  
  public JFrameExample()
  {
    setExtendedState(MAXIMIZED_BOTH);
    addWindowStateListener(new WindowStateListener()
    {
      
      private boolean iconified = false;

      public void windowStateChanged(WindowEvent e)
      {
        if (!iconified && e.getNewState() == NORMAL)
        {
          System.out.println("Normal");
        }
        else if(e.getNewState() == ICONIFIED){
          iconified = true;
        }
        else if (e.getNewState() == MAXIMIZED_BOTH)
        {
          System.out.println("Maximiert");
        }
        else{
          iconified = false;
        }
      }

    });

    

  }
  
  public static void main(String[] args)
  {
    new JFrameExample().setVisible(true);
  }
}


Ich frage mich aber immer noch warum du die größe nicht direkt am anfang setzt. Dann brauchst du die nachher eigentlich nicht mehr zu setzen.

MFG

zEriX
 
Zuletzt bearbeitet:
Zurück