如何使JDesktopPane中的JInternalFrame不重叠

时间:2014-10-01 17:51:20

标签: java overlapping jinternalframe jdesktoppane

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

直到现在,我可以使用getBounds()。intersects()方法检查两个内部帧是否重叠。但是,我对下一步该做什么一无所知。

我试过谷歌,但得不到满意的答案。请提出解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

两个答案:

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

    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中。