0

JDesktopPane 内に複数の JInternalFrame があります。すべての JInternalFrame(s) は装飾されておらず、マウス リスナーを使用してドラッグを管理しています。ただし、内部フレームが重ならないようにする必要があります。つまり、1 つの内部フレームが別のフレームと交差しないようにする必要があります。

これまで、 getBounds().intersects() メソッドを使用して、2 つの内部フレームが重なっているかどうかを確認できました。しかし、私は次に何をすべきかについて無知です。

Google を試しましたが、満足のいく答えが得られませんでした。解決策を提案してください。

ありがとうございました !

4

1 に答える 1

0

2つの答え:

  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 に答える