Sor*_*ter 30
您可以使用边框在面板上放置另一个面板,使边框可见.使用以下代码移动窗口.
public class MotionPanel extends JPanel{
private Point initialClick;
private JFrame parent;
public MotionPanel(final JFrame parent){
this.parent = parent;
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
initialClick = e.getPoint();
getComponentAt(initialClick);
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
// get location of Window
int thisX = parent.getLocation().x;
int thisY = parent.getLocation().y;
// Determine how much the mouse moved since the initial click
int xMoved = e.getX() - initialClick.x;
int yMoved = e.getY() - initialClick.y;
// Move window to this position
int X = thisX + xMoved;
int Y = thisY + yMoved;
parent.setLocation(X, Y);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用这段代码了一段时间,为未修饰的窗口制作自定义标题栏.PS:您可以通过扩展JComponent而不是JPanel来概括此示例.
是的,这很有可能。您需要一个 MouseListener 来侦听鼠标事件。您在鼠标按下时开始移动,在鼠标向上时停止移动。然后,您只需将窗口位置平移与鼠标在该阶段平移的量相同的量(计算旧鼠标位置和新鼠标位置之间的增量,并将其添加到帧位置)。您应该能够使用鼠标侦听器相当轻松地完成此操作。
归档时间: |
|
查看次数: |
18293 次 |
最近记录: |