[Java] 프레임 이동, 투명, 모양 정의한 예제소스

급하게 해서 주석이 없는 .....

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Point;
import java.awt.Shape;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.RoundRectangle2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MovePanel extends JFrame implements ComponentListener {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    public JPanel jPanel1 = new JPanel(){
        /* (non-Javadoc)
         * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
         */
        protected void paintComponent(Graphics g) {
            if (g instanceof Graphics2D) {
                Paint p = new GradientPaint(getWidth(), getHeight(), new Color(221, 221, 221, 50), 0.0f, 0.0f,
                        new Color(221, 221, 221, 150), true);
                Graphics2D g2d = (Graphics2D) g;
                g2d.setPaint(p);
                g2d.fillRect(0, 0, getWidth(), getHeight());
            } else {
                super.paintComponent(g);
            }
        }
    };

    /* move by mouse pointer */
    Point mainFrameLocation = new Point(0, 0);
    Point mouseClickedLocation = new Point(0, 0);

    public MovePanel() {

//        jPanel1.setOpaque(true);
        addMouseListener(new FrameMove_mouseAdapter(this));
        addMouseMotionListener(new FrameMove_mouseMotionAdapter(this));

        /* root frame */
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMinimumSize(new Dimension(200, 200));
        setUndecorated(true);

        getContentPane().add(jPanel1, BorderLayout.CENTER);
        setLocationRelativeTo(null);
        
        addComponentListener(this);
    }

    public static void main(String[] args) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                MovePanel mainFrame = new MovePanel();
                mainFrame.setVisible(true);
                com.sun.awt.AWTUtilities.setWindowOpacity(mainFrame, 80.0f / 100.0f);
            }
        });
    }

    public void componentHidden(ComponentEvent arg0) {
        // TODO Auto-generated method stub
        
    }

    public void componentMoved(ComponentEvent arg0) {
        // TODO Auto-generated method stub
        
    }

    public void componentResized(ComponentEvent arg0) {
        // TODO Auto-generated method stub
        Shape shape = new RoundRectangle2D.Float(0, 0, getWidth(),
                getHeight(), 20, 20);
        com.sun.awt.AWTUtilities.setWindowShape(this, shape);
    }

    public void componentShown(ComponentEvent arg0) {
        // TODO Auto-generated method stub
        
    }
}

/**
 * @author tobby48 2009. 07. 22
 */
class FrameMove_mouseAdapter extends MouseAdapter {
    private MovePanel frame;

    FrameMove_mouseAdapter(MovePanel mainframe) {
        this.frame = mainframe;
    }

    public void mousePressed(MouseEvent e) {
        frame.mouseClickedLocation.x = e.getX();
        frame.mouseClickedLocation.y = e.getY();
    }

    public void mouseReleased(MouseEvent e) {
    }
}

/**
 * @author tobby48 2009. 07. 22
 */
class FrameMove_mouseMotionAdapter extends MouseMotionAdapter {
    private MovePanel frame;
    
    FrameMove_mouseMotionAdapter(MovePanel mainframe) {
        this.frame = mainframe;
    }

    public void mouseMove(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) {
        frame.setLocation(e.getLocationOnScreen().x - frame.mouseClickedLocation.x,
                e.getLocationOnScreen().y - frame.mouseClickedLocation.y);
    }
}

by tobby48 | 2009/08/07 18:05 | App Programming | 트랙백 | 덧글(0)

<< 이전 페이지     다음 페이지 >>