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); }}