Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse

ruutaiokwu

Top Contributor
Hallo zusammen

- Wenn ich das Fenster vergrössere, dann kommt der Wert der ehemaligen (kleineren) Grösse raus
- Wenn ich das Fenster verkleinere, dann kommt der Wert der ehemaligen (grösseren) Grösse raus


Code:
public Form(final FTPRunnable ftpRunnable) throws Exception
    {
        imageLabel = new JLabel("");
        Form.properties = (System.getProperty("user.dir") + "/settings/settings.ini").replace("\\", "/");
        this.propertyMngr = new PropertyMngr();
        this.propertyMngr.init(Form.properties, false);
        final String host = this.propertyMngr.getString("host").trim();
        final String username = this.propertyMngr.getString("username").trim();
        final String password = this.propertyMngr.getString("password").trim();
        this.ftp = new FileTransferClient();
        this.ftp.setRemoteHost(host);
        this.ftp.setUserName(username);
        this.ftp.setPassword(password);
        this.ftpRunnable = ftpRunnable;
        this.mainFrame = new JFrame();
        final Color bgcolor = new Color(Integer.parseInt("efefef", 16));
        this.mainFrame.getContentPane().setBackground(bgcolor);
        JLabel imageLabel = this.imageLabel;
        this.mainFrame.getContentPane().add(imageLabel, BorderLayout.CENTER);
        this.mainFrame.setTitle("Captured image preview");
        this.mainFrame.setBounds(100, 100, Form.APP_WIDTH, Form.APP_HEIGHT);
        this.mainFrame.setSize(Form.APP_WIDTH, Form.APP_HEIGHT);
        this.mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        mainFrame.addWindowStateListener(new WindowStateListener() {

            public void windowStateChanged(WindowEvent arg0)
            {
                windowStateChanged_mainFrame(arg0);
            }
        });
    }

    private void windowStateChanged_mainFrame(WindowEvent e)
    {
        boolean max = false;
        boolean min = false;

        if ((e.getNewState() & Frame.NORMAL) == Frame.NORMAL)
        {
            min = !min;
        }

        if ((e.getNewState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH)
        {
            max = !max;
        }

        int imageLabelWidth = imageLabel.getWidth();
        int imageLabelHeight = imageLabel.getHeight();

        if (max && min)
        {
            System.out.println("Max. window size ... ");
        }
        else
        {
            if (!max && min)
            {
                System.out.println("Smaller than max. window size ... ");
            }
        }

        System.out.println("imageLabelWidth: " + imageLabelWidth + ", imageLabelHeight: " + imageLabelHeight);

        final Image image = bufferedImage.getScaledInstance(imageLabelWidth, imageLabelHeight, Image.SCALE_SMOOTH);
        final ImageIcon imageIconNew = new ImageIcon(image);
        this.imageLabel.setIcon(imageIconNew);
    }



(Schräg ist auch, dass beim Vergrössern beide if zutreffen (`if ((e.getNewState() ... `), beim Verkleinern aber nur eines. Deshalb mein Gebastel. Scheint aber zu funktionieren.)
 

mrBrown

Super-Moderator
Mitarbeiter
(Schräg ist auch, dass beim Vergrössern beide if zutreffen (`if ((e.getNewState() ... `), beim Verkleinern aber nur eines. Deshalb mein Gebastel. Scheint aber zu funktionieren.)

(e.getNewState() & Frame.NORMAL) == Frame.NORMAL dürfte immer zutreffen, da Frame.NORMAL 0 ist, daher ist min immer true.
 

Blender3D

Top Contributor
Wenn ich das Fenster vergrössere, dann kommt der Wert der ehemaligen (kleineren) Grösse raus
Java:
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class StateFrame extends JFrame {
    public StateFrame(int width, int height) {
        setPreferredSize(new Dimension(width, height));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowIconified(WindowEvent e) {
                System.out.println("ICONFIED ");
            }
        });
        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                String text = (getExtendedState() == Frame.NORMAL) ? "NORMAL" : "MAXIMIZED";
                System.out.println(text + "\t[" + getWidth() + "," + getHeight() + "]");
            }
        });
        pack();
        setVisible(true);
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
melaniemueller Was macht e.getSource() ? AWT, Swing, JavaFX & SWT 2
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
Furtano AWT GridBagLayout macht mir Sorgen AWT, Swing, JavaFX & SWT 3
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
T JLabel macht sich selbstständig? o.0 AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S Swing Swing macht sehr seltsame Zeichnungen. AWT, Swing, JavaFX & SWT 13
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
R wie macht am besten ein GUI ? AWT, Swing, JavaFX & SWT 21
hdi Swing JFrame#setCursor macht Zicken AWT, Swing, JavaFX & SWT 10
L Swing JButton macht Eventhandling kaputt AWT, Swing, JavaFX & SWT 3
D GridBagLayout macht nicht das was es soll AWT, Swing, JavaFX & SWT 12
J Swing Formulare in Swing - wie macht ihr das? AWT, Swing, JavaFX & SWT 7
T JTable / RowSorter macht große Probleme AWT, Swing, JavaFX & SWT 2
V Swing Mein swingender Pokertisch macht Probleme AWT, Swing, JavaFX & SWT 10
G Bildervorschau macht Probleme AWT, Swing, JavaFX & SWT 22
N SWT Text pack() macht Text zu klein AWT, Swing, JavaFX & SWT 2
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
N Gridlayout macht Probleme AWT, Swing, JavaFX & SWT 3
G jpanel macht kein repaint AWT, Swing, JavaFX & SWT 2
F Thread macht keine Pause AWT, Swing, JavaFX & SWT 22
W Wie macht man in Swing eigentlich nen Benutzereingabedialog? AWT, Swing, JavaFX & SWT 7
T JTree macht mich wahnsinnig (selektion) AWT, Swing, JavaFX & SWT 2
hdi meine paint-methode macht faxen? AWT, Swing, JavaFX & SWT 21
W Wie macht man so nen Settings Dialog AWT, Swing, JavaFX & SWT 2
P JTree macht mich fertig AWT, Swing, JavaFX & SWT 3
E Hilfe - setVisible macht was es will AWT, Swing, JavaFX & SWT 7
F Paint-Methode Überschreiben macht Refresh-Fehler ? AWT, Swing, JavaFX & SWT 8
G KeyListener Problem in GUI (macht einfach nichts) AWT, Swing, JavaFX & SWT 2
M JComboBox macht nicht immer was sie soll AWT, Swing, JavaFX & SWT 5
F JTable mit Checkbox macht Probleme AWT, Swing, JavaFX & SWT 4
F Look and Feel zur Laufzeit ändern macht Probleme AWT, Swing, JavaFX & SWT 3
A Was macht super? AWT, Swing, JavaFX & SWT 10
C Was genau macht getValueIsAdjusting() ? AWT, Swing, JavaFX & SWT 4
S AWT Wie kann ich Text horizontal exakt positionieren? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben