Java 如何使JDesktopPane中的JInternalFrame不重叠
我在一个JDesktopPane中有多个JInternalFrame。所有JInternalFrame都是未修饰的,我使用鼠标侦听器管理拖动。但是,我希望内部帧不重叠,即一个内部帧不应与另一个内部帧相交 到目前为止,我可以使用getBounds().intersects()方法检查两个内部帧是否重叠。然而,我不知道下一步该怎么办 我试过谷歌,但没有得到满意的答案。请提出解决办法Java 如何使JDesktopPane中的JInternalFrame不重叠,java,overlapping,jinternalframe,jdesktoppane,Java,Overlapping,Jinternalframe,Jdesktoppane,我在一个JDesktopPane中有多个JInternalFrame。所有JInternalFrame都是未修饰的,我使用鼠标侦听器管理拖动。但是,我希望内部帧不重叠,即一个内部帧不应与另一个内部帧相交 到目前为止,我可以使用getBounds().intersects()方法检查两个内部帧是否重叠。然而,我不知道下一步该怎么办 我试过谷歌,但没有得到满意的答案。请提出解决办法 谢谢大家! 两个答案: 如果要设置哪个内部帧与另一帧重叠,请使用setComponentZOrder(组件comp,i
谢谢大家! 两个答案:
internalFrame.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
desktopPane.setComponentZOrder(internalFrame, 0);
}
});
二,。如果您希望它们严格地不重叠,请将它们放在单独的JFrame中。您的答案是创建一个新的顶级窗口?这似乎根本不对。我很确定他想要一个顶级窗口中的所有内部框架他/她明确提到他/她想要JDesktopPane中的JInternalFrame。我只是简单地回答了这个问题,并相应地设置了变量。也就是说,JInternalFrame的祖先是任意的,只要您使用setComponentZOrder。如果希望祖先是contentPane,请执行contentPane.setComponentZOrder(internalFrame,0);
internalFrame.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
desktopPane.setComponentZOrder(internalFrame, 0);
}
});