0

我在 JDesktopPane 中有多个 JInternalFrame(s)。所有 JInternalFrame(s) 都未装饰,我使用鼠标侦听器管理拖动。但是,我希望内部框架不重叠,即一个内部框架不应与另一个相交。

到目前为止,我可以使用 getBounds().intersects() 方法检查两个内部框架是否重叠。但是,我不知道下一步该怎么做。

我尝试了谷歌,但没有得到满意的答案。请提出解决方案。

谢谢 !

4

1 回答 1

0

两个答案:

  1. 如果要设置哪个内部框架与另一个重叠,请使用 setComponentZOrder(Component comp, int index) 函数。

例如

JDesktopPane desktopPane = new JDesktopPane();
contentPane.add(desktopPane);
JInternalFrame internalFrame = new JInternalFrame("New JInternalFrame");
desktopPane.add(internalFrame);
desktopPane.setComponentZOrder(internalFrame, 0);

将 setComponentZOrder 函数放在 JInternalFrame 组件侦听器中。

    internalFrame.addComponentListener(new ComponentAdapter() {
        @Override
        public void componentMoved(ComponentEvent e) {
            desktopPane.setComponentZOrder(internalFrame, 0);
        }
    });

2.如果您希望它们严格不重叠,请将它们放在单独的jframe中。

于 2015-02-06T22:47:14.063 回答