0

以下を追加して、スタンドアローンのアプレットプログラムを作成しようとしました。

            public static void main(String[] args) {
    JFrame frame = new JFrame("StartingPoint");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    StartingPoint sp = new StartingPoint();
    frame.getContentPane().add(sp);
    sp.init();
    frame.pack();
    frame.setVisible(true);
    sp.start();
    }

公開授業の直後。アプレットとして実行すると何もしませんが、アプリケーションとして実行すると、見出しを除いて非常に小さく、ほぼ平らなボックスとして実行され、手動でサイズを変更すると、画面は背景色以外は空白になります。何がこれを引き起こす可能性がありますか?

また、フレームのサイズを変更するたびに、何が起こるかのスクリーンショットのようにフリーズし、画面がほぼフルスクリーンにサイズ変更されると、画面の上部にスライバーが表示されることに気付きました動くべきものの。

4

2 に答える 2

1

私が言いたいのは、アプレットをフレームにドロップするのは本当に悪い考えです。アプリケーションのコンテンツを別のコンテナー ( などJPanel) に書き込んで、それをアプレットまたはフレームに追加することをお勧めします - IMHO。

Java ドキュメントから...

ウィンドウ#パック

サブコンポーネントの優先サイズとレイアウトに合わせて、この Window のサイズを変更します。ウィンドウの幅と高さのいずれかが setMinimumSize メソッドへの前の呼び出しで指定された最小サイズより小さい場合、ウィンドウの幅と高さは自動的に拡大されます。

ウィンドウおよび/またはその所有者がまだ表示可能になっていない場合は、適切なサイズを計算する前に両方が表示可能になります。Window は、サイズが計算された後に検証されます。

preferredSizeこれは、使用したい場合、アプレットが を提供する必要があることを示唆しています。pack

于 2012-11-14T00:03:20.193 に答える
0

次のサイズを設定する必要がありますJFrame

frame.setSize(500, 400);

メソッドをオーバーライドしているように聞こえますpaint()。その場合は、電話する必要があります

super.paint(g);

サイズ変更時にアプレット コンテナーのすべての子コンポーネントを再描画します。

于 2012-11-13T22:29:06.743 に答える