0

私はJavaが初めてです(ただし、JavaScriptについては幅広い知識があります)。 で
作業しようとしているCanvasため、この奇妙な問題が発生します。ここで
コードを確認してください。ご覧のとおり、 のサイズを定義した後、印刷しようとしています。 しかし、サイズが正しく印刷されません。
Canvas

            setMinimumSize(new Dimension(WIDTH,HEIGHT));
            setMaximumSize(new Dimension(WIDTH,HEIGHT));
            setPreferredSize(new Dimension(WIDTH,HEIGHT));

            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(this, BorderLayout.CENTER);
            frame.pack();
            frame.setResizable(false);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);

            System.out.println(getWidth());

なぜサイズが変更されたのですか?

4

1 に答える 1

1

優先/最小/最大サイズは、レイアウト マネージャーがコンポーネントをどのようにレイアウトするかについての「提案」であり、彼らが使用することを保証するものではありません。

BorderLayout は、使用可能なスペースを使用してコンポーネントを埋めようとします。

これで、pack により、フレームのサイズが (通常は) コンテンツ ペインの優先サイズに設定されました。

それで、今あなたが尋ねているのは、なぜそれが提供したものに設定されていないのかということです。答えは、フレームにはフレームの装飾も含める必要があり、使用可能なスペース (フレーム サイズ - 装飾のインセット = 使用可能なスペース) を差し引く必要があるため、メニュー バーも考慮する必要があります。

于 2013-01-12T22:46:01.593 に答える