所以,我有一个jFrame,我正在构建聊天的主界面窗口。这个窗口/ jFrame有几个按钮,每个按钮都显示一个jDialog(我之前在Netbeans中创建了一个jDialog拖到父(?)jFrame上)。
我的问题是两个窗口都设置为undecorated = true
,因此我希望让用户通过单击并拖动一部分窗口(在未修饰时模拟标题栏)随意拖动和移动所有窗口)
在所有jFrame中,我通过initComponents()
之后的以下代码完成了此任务:
final Point point = new Point(0,0); // Why 'final' and not simply Point point?
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(!e.isMetaDown()){
point.x = e.getX();
point.y = e.getY();
System.out.println("Ratón pulsado: " + point.x + "," + point.y);
}
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
if(!e.isMetaDown() && point.y <= 17){ //Coordinates of title bar, any X and up to 17px from the top border
Point p = getLocation();
setLocation(p.x + e.getX() - point.x, p.y + e.getY() - point.y);
System.out.println("Ratón movido: " + (p.x + e.getX() - point.x) + "," + (p.y + e.getY() - point.y));
}
}
});
但是,我不知道如何在jDialog中使用此代码。当我在导航器中右键单击它并选择自定义代码时,我无法将其粘贴到那里,因为整个jFrame停止工作。我是jFrames的jDialogs孩子的新手,所以请帮我一些指导:)谢谢
答案 0 :(得分:3)
好吧,正如@mKorbel建议的那样,我前往here,在那里我找到了一个名为ComponentMover
的好课程,帮助我做到这一点。我需要2个额外的声望,所以当我能够做到这一点时,我保存链接以获得回报和upvote。
我必须确保它完美而且完全符合我的要求,但看起来很棒!谢谢!