Pero' io ho provato con Swing. Volevo provare una draggable window, una finestra senza bordi che si può spostare trascinandola con il mouse. Ecco il risultato:
import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JWindow;
public class DraggableBorderlessWindow {
public static void main(String[] args) {
final JWindow win = new JWindow();
makeDraggable(win);
win.setSize(100, 100);
win.setVisible(true);
win.setLocation(100, 100);
}
private static void makeDraggable(final Container window) {
MouseAdapter dragger = new Dragger(window);
window.addMouseMotionListener(dragger);
window.addMouseListener(dragger);
}
private static class Dragger extends MouseAdapter {
private int offsetX;
private int offsetY;
private final Container window;
public Dragger(Container window) {
this.window = window;
}
@Override
public void mousePressed(MouseEvent e) {
offsetX = window.getX() - e.getXOnScreen();
offsetY = window.getY() - e.getYOnScreen();
}
@Override
public void mouseDragged(MouseEvent e) {
window.setLocation(e.getXOnScreen() + offsetX,
e.getYOnScreen() + offsetY);
}
}
}
0 commenti:
Posta un commento