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); } }