Mega Code Archive

 
Categories / Java by API / Java Awt Event
 

Extends ComponentAdapter

import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; import javax.swing.JLabel;  class WindowSnapper extends ComponentAdapter {   private boolean locked = false;   private int sd = 50;   public void componentMoved(ComponentEvent evt) {     if (locked)       return;     Dimension size = Toolkit.getDefaultToolkit().getScreenSize();     int nx = evt.getComponent().getX();     int ny = evt.getComponent().getY();     // top     if (ny < 0 + sd) {       ny = 0;     }     // left     if (nx < 0 + sd) {       nx = 0;     }     // right     if (nx > size.getWidth() - evt.getComponent().getWidth() - sd) {       nx = (int) size.getWidth() - evt.getComponent().getWidth();     }     // bottom     if (ny > size.getHeight() - evt.getComponent().getHeight() - sd) {       ny = (int) size.getHeight() - evt.getComponent().getHeight();     }     locked = true;     evt.getComponent().setLocation(nx, ny);     locked = false;   }   public static void main(String[] args) {     JFrame frame = new JFrame("");     JLabel label = new JLabel("Move this window's title bar to demonstrate screen edge snapping.");     frame.getContentPane().add(label);     frame.pack();     frame.addComponentListener(new WindowSnapper());     frame.setVisible(true);   } }