我在 JDesktopPane 中有多个 JInternalFrame(s)。所有 JInternalFrame(s) 都未装饰,我使用鼠标侦听器管理拖动。但是,我希望内部框架不重叠,即一个内部框架不应与另一个相交。
到目前为止,我可以使用 getBounds().intersects() 方法检查两个内部框架是否重叠。但是,我不知道下一步该怎么做。
我尝试了谷歌,但没有得到满意的答案。请提出解决方案。
谢谢 !
我在 JDesktopPane 中有多个 JInternalFrame(s)。所有 JInternalFrame(s) 都未装饰,我使用鼠标侦听器管理拖动。但是,我希望内部框架不重叠,即一个内部框架不应与另一个相交。
到目前为止,我可以使用 getBounds().intersects() 方法检查两个内部框架是否重叠。但是,我不知道下一步该怎么做。
我尝试了谷歌,但没有得到满意的答案。请提出解决方案。
谢谢 !
两个答案:
例如
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中。