2

このコードを実行すると、ウィンドウは作成されますが、指定されたサイズでは作成されません。何が問題なのですか?

import javax.swing.*;
import java.awt.*;

public class Windowing {
    void JFrame(){
        JFrame frames = new JFrame("Total recall");
        frames.setSize(1000,8000);
        frames.setVisible(true);
        frames.pack();
        //Buttons push = new Buttons();
        //((Buttons) push).buttons();
        JTextField wager = new JTextField(1);
        wager.setSize(100,200);
        wager.setVisible(true);
        wager.setLocation(100, 200);
        frames.add(wager);
        //frames.add(push);
    }
}
4

3 に答える 3

5

frames.pack();への呼び出しを削除できます。以前に設定されたフレームサイズを上書きします。

ただし、実際に実行したいのは、を削除してメソッドの一番下にframes.setSize(1000,8000)移動することです。frames.pack()これにより、フレームがコンテンツを表示するのに十分な大きさでありながら、画面に収まるほど大きくないことが保証されます。

フレームに何かを追加する前に呼び出すとpack(今行っているように)、ウィンドウが非常に小さくなります。画面の左上近くに表示されている可能性がありますが、どこを見ればよいかわからない限り、気付くことはありません。

于 2010-01-14T20:01:05.837 に答える
3

ここにはたくさんの「機会エリア」があるようです。

  • まず、変更が見られなかったため、フレームサイズを1000x8000に設定したようです。

  • setVisible次に、textFieldも表示されなかったため、textFieldを呼び出します。

  • そして最後に、テキストフィールドのサイズを設定します(フレーム全体が表示されているのでわかります)

ここでの問題は、構築の最後に呼び出す必要があることpackですsetVisible。また、レイアウトマネージャーとフレームの使い方を学ぶ必要があります。

スイングは非常に強力ですが、最初は少しわかりにくいです。

これらの2つのリンクが役立ちます。

コードを変更したところ、結果は次のようになります。

代替テキスト

これが変更されたソースコードです。

import javax.swing.*;
import java.awt.*;

public class Windowing {
    public static void main( String [] args ) {
        Windowing windowing = new Windowing();
        windowing.showFrame();
    }
    void showFrame(){
        JFrame frame = new JFrame("Total recall");
        JButton push = new JButton("Push");
        JTextField wager = new JTextField(15);

        // Panels do have "FlowLayout"
        JPanel panel = new JPanel();
        panel.add(wager);
        panel.add(push);

        frame.add( panel );
        frame.pack();
        frame.setVisible(true);

    }
}
于 2010-01-14T20:28:46.997 に答える
1

setPreferredSize(Dimension)代わりに使用してみてください。

于 2010-01-14T20:02:16.473 に答える