Java by API/java.awt.event/ComponentAdapter

Материал из Java эксперт
Версия от 14:17, 31 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

extends ComponentAdapter

 
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ruponentAdapter;
import java.awt.event.ruponentEvent;
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);
  }
}