2

テキスト フィールドを短くして、jframe の最後まで伸びないようにしたいので、次のようになります。 ここに画像の説明を入力

setPreferedSize() と setSize() を試しましたが、うまくいきませんでした。

@Override
        public void run() {

            JFrame frame = new JFrame("Test Calculator");
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setSize(500, 500);

            JPanel panel = new JPanel(new GridBagLayout());
            frame.getContentPane().add(panel, BorderLayout.NORTH);
            GridBagConstraints c = new GridBagConstraints();

            JLabel testLabel = new JLabel("Enter Score For Test 1: ");  
            c.gridx = 0;
            c.gridy = 0;
            c.anchor = GridBagConstraints.WEST;
            c.fill = GridBagConstraints.BOTH;
            c.insets = new  Insets(40, 15, 15, 0);
            panel.add(testLabel , c);


            JTextField txtField1 = new JTextField("TextField");
            c.gridx = 1;
            c.gridy = 0;
            c.fill = GridBagConstraints.HORIZONTAL;
            c.weightx = .5; 
            panel.add(txtField1 , c);
        }
4

5 に答える 5

5

テキスト フィールドを水平方向に埋める必要があることをレイアウトに伝えているので、それが実行されます。交換

c.fill = GridBagConstraints.HORIZONTAL;

c.fill = GridBagConstraints.NONE;
于 2013-07-10T21:02:32.820 に答える
3

何よりもまず、これを取り除きます:

frame.setSize(500, 500);

代わりに、JFrame を埋めてから可視に設定する前に JFrame を呼び出して、コンポーネントとレイアウト マネージャーのサイズを変更します。pack()

次に、メイン コンテナーの周囲に空の境界線を追加するか、コンテナーを使用して空の JLabel を GridBagLayout に追加することを検討してください。

JTextField に適切なインセットを与えて、周囲にクッションを与えることもできます。

c.insets = new  Insets(40, 15, 15, 40);
panel.add(txtField1, c);
于 2013-07-10T20:58:52.863 に答える
2

GridBagConstraints gridwidth フィールドを変更することで、特定のコンポーネントが占める列の数を変更できます。

//this would make the next component take up 2 columns
c.gridwidth = 2;
于 2013-07-10T21:01:44.600 に答える
1

jpanel を用意して、その寸法とレイアウトを設定し、そのパネルに要素を追加して、そのパネルを jframe に追加することができます。

于 2013-07-10T21:05:04.723 に答える
0

実行する必要がある内容に応じて、使用できるさまざまなレイアウト タイプがあります。私は通常、ボックスを使用するのが好きです。それらには、水平/垂直ストラットを作成し、剛性領域を作成できるメソッドがあります (これは私が通常使用するものです)。

    Box box1 = Box.createHorizontalBox();
    Box box2 = Box.createVerticalBox();

    box1.add(Box.createRigidArea(new Dimension(30,0)));
    box1.add(testLabel);
    box1.add(Box.createRigidArea(new Dimension(30,0)));
    box1.add(txtField1);
    box1.add(Box.createRigidArea(new Dimension(30,0)));

    box2.add(Box.createRigidArea(new Dimension(0,30)));
    box2.add(box1);
    box2.add(Box.createRigidArea(new Dimension(0,30)));

    JFrame.add(box2);

さまざまな種類のレイアウトの説明と使用方法については、次のリンクを参照してください: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

于 2013-07-10T21:14:08.723 に答える