import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class FlickeringWindow {

    public static void main(String[] args) {
        JPanel panel = new JPanel(new BorderLayout());
        panel.setBackground(Color.RED);
        
        JDialog dialog = new JDialog();
        dialog.setUndecorated(true);
        dialog.getRootPane().setOpaque(false);
        dialog.setBackground(new Color(0, 0, 0, 0));
        dialog.getRootPane().setBorder(new LineBorder(Color.BLUE, 5));

        dialog.setContentPane(panel);
        dialog.setPreferredSize(new Dimension(450, 450));
        ResizableListener listener = new ResizableListener(dialog);
        dialog.addMouseMotionListener(listener);
        dialog.addMouseListener(listener);
        dialog.setLocationRelativeTo(null);
        dialog.pack();
        dialog.setVisible(true);
    }

    private static class ResizableListener extends MouseAdapter {
        boolean isInResize = false;
        Point referencePoint;
        Dialog dialog;

        public ResizableListener(Dialog dialog) {
            this.dialog = dialog;
        }

        @Override
        public void mousePressed(MouseEvent e) {
            referencePoint = e.getPoint();
            isInResize = true;
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            if (isInResize) {
                isInResize = false;
                referencePoint = null;
            }
        }

        @Override
        public void mouseDragged(MouseEvent e) {
            if (isInResize) {
                resizeView(e);
            }
        }

        private void resizeView(MouseEvent e) {
            int mouseOffset = (int) (referencePoint.distance(e.getX(), e.getY()));
            if (mouseOffset > 20 || mouseOffset < -20) {
                referencePoint = new Point(e.getX(), e.getY());
                dialog.setBounds(dialog.getX(), dialog.getY(), dialog.getWidth() + 10, dialog.getHeight() + 10);
            }
        }
    }
} 