windowsnapper.java

来自「oraily的Swing hacks code」· Java 代码 · 共 50 行

JAVA
50
字号
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class WindowSnapper extends ComponentAdapter {    public WindowSnapper() { }	    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();        }		// make sure we don't get into a recursive loop when the		// set location generates more events        locked = true;        evt.getComponent().setLocation(nx,ny);        locked = false;    }        public static void main(String[] args) {        JFrame frame = new JFrame("Hack #123: Window Snapping");        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);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?