1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| public static final int WIDTH = 437; public static final int HEIGHT = 127; public static BufferedImage buffer = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
...
JFrame detached = new JFrame(); detached.setSize(WIDTH, HEIGHT); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); detached.setLocation((dim.width - WIDTH) / 2, (dim.height - HEIGHT) / 2); detached.setUndecorated(true); detached.setBackground(new Color(0, 0, 0, 0));
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override public void paintComponent(Graphics g_) { Graphics2D g2 = (Graphics2D) buffer.getGraphics(); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR)); g2.fillRect(0, 0, WIDTH, HEIGHT); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC)); draw(g2); g2.dispose();
Graphics2D g = (Graphics2D) g_; g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC)); g.drawImage(buffer, 0, 0, null); g.dispose(); }
}; panel.addMouseListener(MenuMouseListener.instance); panel.addMouseMotionListener(MenuMouseListener.instance); panel.setIgnoreRepaint(true);
detached.add(panel);
detached.setVisible(true);
...
private static class MenuMouseListener implements MouseListener, MouseMotionListener {
public static final MenuMouseListener instance = new MenuMouseListener();
private MenuMouseListener() { }
private int locX; private int locY;
@Override public void mouseDragged(MouseEvent e) { if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK) { detached.setLocation(e.getXOnScreen() - locX, e.getYOnScreen() - locY); } }
@Override public void mouseMoved(MouseEvent e) { }
@Override public void mouseClicked(MouseEvent e) { }
@Override public void mousePressed(MouseEvent e) { if (e.getModifiers() == MouseEvent.BUTTON1_MASK) { locX = e.getX(); locY = e.getY(); } }
@Override public void mouseReleased(MouseEvent e) { }
@Override public void mouseEntered(MouseEvent e) { }
@Override public void mouseExited(MouseEvent e) { } } |