小编moj*_*ays的帖子

磁效应将窗口对话框或框架附加到另一个

我必须使用Windows(JFrame和非模态JDialog),我想将JDialog附加到JFrame,这样当我移动JFrame时,JDialog也会被移动.同步运动本身不是问题.我通过ComponentListener.componentMoved(.)实现了它.

但附件不应该修复.用户应该可以通过将JDialog从JFrame移开来分离JDialog.只有当JDialog直接放置到JFrame边框时,才应附加它.

为了帮助用户将JDialog紧挨着JFrame(附加它),我想实现一个"磁效应":如果JDialog移动到接近10px到JFrames边界,JDialog应该自动放置在JFrame的旁边.在ComponentListener.componentMoved(.)中检测这种情况也不是问题,而是设置新的JDialog位置:

当我通过JDialog.setLocation(.)设置新位置时,首先正确放置JDialog.但是当我完成对话框拖动(释放鼠标按钮)时,JDialog被放回到先前的位置(距离JFrame 10px).

我认为这是因为在拖动结束时,"系统"也调用setLocation(.).我有什么想法可以防止这种行为?例如,从事件队列中删除任何后续鼠标移动或鼠标释放事件?

java swing location frame

4
推荐指数
1
解决办法
2365
查看次数

标签 统计

frame ×1

java ×1

location ×1

swing ×1