■ 공부/JAVA

[JAVA] DragListener

J U N E 2024. 2. 12. 11:24
class DragListener extends MouseAdapter {
    private static final int PADDING = 10;
    private int mouseX;
    private int mouseY;
    private boolean resizing = false;
    
    @Override
    public void mouseMoved(MouseEvent e) {
        JFrame frame = (JFrame) e.getSource();
        if (isSizeGrip(frame, e)) {
            setCursor(Cursor.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR));
        } else {
            setCursor(Cursor.getDefaultCursor());
        }
    }
    
    @Override
    public void mousePressed(MouseEvent e) {
        JFrame frame = (JFrame) e.getSource();
        mouseX = e.getX();
        mouseY = e.getY();
        resizing = isSizeGrip(frame, e);
    }
    
    @Override
    public void mouseReleased(MouseEvent e) {
        resizing = false;
    }
    
    @Override
    public void mouseDragged(MouseEvent e) {
        JFrame frame = (JFrame) e.getSource();
        if (resizing) {
            frame.setSize(e.getX(), e.getY());
        } else {
            frame.setLocation(frame.getLocation().x + (e.getX() - mouseX),  frame.getLocation().y + (e.getY() - mouseY));
            //if (rectFrame != null) {
                Point point = getLocation();
                rectFrame.x = point.x;
                rectFrame.y = point.y;
            //}
        }
    }
    private boolean isSizeGrip(JFrame frame, MouseEvent e) {
        return !iconized && (e.getX() >= frame.getWidth() - PADDING && e.getY() >= frame.getHeight() - PADDING);
    }
}

'■ 공부 > JAVA' 카테고리의 다른 글

[JAVA] Graphics2D  (1) 2024.01.31
[JAVA] 소켓통신 : 학점 반환하기  (0) 2024.01.30
[JAVA] 소켓통신 : 채팅프로그램  (0) 2024.01.26
[JAVA] File 클래스 : cmd 구현하기  (0) 2024.01.25
[JAVA] MainFrame 소스  (0) 2024.01.24