4

Java SwingでJInternalFrameを配置するためのデフォルト機能はありますか?

Java Swingアプリケーション内にカスケード、タイルなどの機能を次のように使用したいと思います。http: //www.codeproject.com/KB/cs/mdiformstutorial.aspx 配置を行ったコードしか見つかりませんでした。手動で。Java Swingではこれがサポートされていませんか、それとも私は少し盲目ですか?

4

2 に答える 2

6

以前にカスケードを実行しましたが、フレームピクセルをシフトして効果を作成しました。これを行う別の方法はわかりません。次に、JDesktopPaneの大きさを計算し、getAllFrames()を使用して内部フレームの配列を取得します。 、次にサイジングとシフトを手動で実行します。

私は(少なくとも2年は探していませんが)swingにはこれらの操作を実行する他の方法がないことを確信していますが、誰かがSwingアプリにボルトで固定するためのサードパーティライブラリを作成したと確信しています。 '1つ書いて、それをオープンソースにします:)

編集、

タイルなどを行う別の方法を考えたのは、FrameTileLayoutManagerのような手間のかかる作業を行うカスタムレイアウトマネージャーを作成し、それを使用することです。

于 2010-03-12T13:46:47.727 に答える
0

これは実際には解決策ではありませんが、より多くのハックです。フレームをレンダリングする前にデスクトップペインの現在の幅を読み取ることができる場合は、内部フレームをカスケード/スタックすることができます。

    int c=desktopPane.getAllFrames().length;
    Random r=new Random();
    if (c<3){
            RegistryDash registry = new RegistryDash();
            registry.setVisible(true);

            desktopPane.add(registry);
            //registry.setLocation(r.nextInt(200),r.nextInt(200));
            registry.setLocation(c*50,c*50);
            try {
                registry.setSelected(true);
            } catch (java.beans.PropertyVetoException e) {
            }

    }else{
     JOptionPane.showMessageDialog(this,"More than three similar windows are currently active. Close some to allow new windows.","Multiple Window Error",JOptionPane.WARNING_MESSAGE);  
    }
于 2020-04-24T19:46:33.260 に答える