devxlogo

Window Resize Event

Window Resize Event

Question:
How can I detect that a window has been resized?I can detect events such as WindowIconified,WindowDeiconified, WindowOpening, WindowClosing, etc., but not the resize event.

Answer:
Figuring out how to detect a window resizing isn’t immediately obviousbecause you might expect the event to be represented by a WindowEvent.In fact, window resizing is just a specific instance of componentresizing, which is signalled by a ComponentEvent. TheComponentEvent.COMPONENT_RESIZED identifier indicates that a ComponentEventis signalling a resize. To receive the event, you must add aComponentListener to the window. Rather than implementing all themethods required by a ComponentListener, it will suffice to subclassComponenetAdapter, and override its componentResized()method. The following program shows how to do this, displaying thenew dimensions of a window as it is resized.

import java.awt.*;import java.awt.event.*;public class ResizeWindow extends Frame {  Label label;  public void showSize() {    label.setText(getWidth() + ", " + getHeight());  }  public ResizeWindow() {    label = new Label();    label.setAlignment(Label.CENTER);    add(label, BorderLayout.CENTER);    addComponentListener(new ComponentAdapter() {      public void componentResized(ComponentEvent e) {        ResizeWindow.this.showSize();      }    });  }  public static final void main(String[] args) {    Frame frame = new ResizeWindow();    WindowListener exitListener;    exitListener = new WindowAdapter() {      public void windowClosing(WindowEvent e) {        Window window = e.getWindow();        window.setVisible(false);        window.dispose();        System.exit(0);      }    };           frame.addWindowListener(exitListener);    frame.setSize(200, 200);    frame.setVisible(true);  }}

devx-admin

Share the Post: