0

を追加したメインパネルを使用してJavaアプリケーションを開発していJDesktopPaneます。をクリックするユーザーはJButton、を表示しJInternalFrameます。私の問題は、Mac OSxのルックアンドフィールを使用するとJDesktopPane、正しいサイズの番組が表示されJInternalFrame、他のルックアンドフィールを使用するとJInternalFrame、画面のサイズで表示されることです。これが私がすることです:

主にJPanel

jDesktopPane1 = new JDesktopPane();
setContentPane(jDesktopPane1);

ユーザーがクリックしたときJButton(s)

public void addInDesktop(JInternalFrame frame){
        frame.setVisible(true);
        try {   
                        jDesktopPane1.setSize(frame.getSize());
                        jDesktopPane1.setPreferredSize((frame.getSize()));
                        System.out.println(frame.getSize().toString());
                        System.out.println(jDesktopPane1.getSize().toString());
            jDesktopPane1.add(frame);
            frame.moveToFront();
            frame.setSelected(true);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }

JDesktopPaneとJInternalFrameのSystem.out.printlnサイズは同じだと言われていますが、なぜJInternalFrameがフルスクリーンサイズで表示されるのでしょうか。

4

2 に答える 2

2

jDesktopPane1.add(frame)のにサイズを出力すると、おそらくサイズの変更が表示されます。デスクトップペインを内部フレームのサイズに設定することは悪い習慣であることをお勧めします-デスクトップペインが配置されている親JFrameのクライアント領域のサイズのままにする必要があると思いました(setContentPane(を呼び出すフレーム) jDesktopPane1) )、内部フレームを自然にその中のどこかに置くだけです。

ペインと内部を同じサイズに設定すると、ルック アンド フィールが「最大化」を意味すると想定される可能性があるため、デスクトップ ペインのサイズを正しく解決すると、内部フレームで奇妙なことが起こります

デスクトップ ペインで setSize() / setPreferredSize() を呼び出さないようにして、L&F 間で一貫して動作するかどうかを確認しますおそらく、デフォルトのサイズが必要なサイズではない場合、内部フレームをどうするのが最善かを理解することができます.

于 2012-03-28T10:50:22.933 に答える