1

これは、GridBagLayoutを使用してレイアウトしたものです。

通常のレイアウト

しかし、ファイルを選択すると、いくつかのラベルが入力されることになっています。これらの小さな「...」ボタンを使用してファイルを選択すると、次のようになります。

散らかったレイアウト

ご覧のとおり、レイアウト全体が混乱しています。私がactionlistenerで行っているのは、これだけです。

            fileTxt = fileChooser.getSelectedFile();
            fileTxtField.setText(fileTxt.getAbsolutePath());
            labels = getLabels(); 
            lbl1.setText(labels[0].toUpperCase());
            Dimension size = lbl1.getPreferredSize();
            lbl1.setMinimumSize(size);
            lbl1.setPreferredSize(size);
            lbl2.setText(labels[1]);
            lbl2.setToolTipText(longLbl);
            size = lbl2.getPreferredSize();
            lbl2.setMinimumSize(size);
            lbl2.setPreferredSize(size);
            button1.setPreferredSize(new Dimension(20,25));
            button2.setPreferredSize(new Dimension(20,25));

したがって、基本的に、ボタンは元のサイズになり、優先サイズではなくなります。これにより、レイアウト全体が台無しになります。これを修正するにはどうすればよいですか?すべてのコンポーネントは、gridBagConstraints.fillのgridbagconstraintがGridBagConstraints.NONEに設定されて満たされないように設定されていますが、レイアウトはまだ混乱しています:(

アップデート

あなたの提案に従って、私はsetPreferredSize()メソッドを呼び出していたコードを削除しました、そしてこれは私が得るものです:

ここに画像の説明を入力してください

明らかに、これは私が避けたいことです-そのテキストよりも大きいボタンは、ボタンにsetPreferredSizeを設定する理由でした。今、私は何をしますか?

4

2 に答える 2

5

電話しないでくださいsetPreferredSize()。これをしましょうLayoutManager

GridBagConstraints定義fillweightxパラメーターで、余分なスペースをどのように配分するかを定義します。

于 2012-04-26T08:15:59.157 に答える
3

これには簡単な解決策があります。ボタンの余分な幅は、ボタンテキストの左右のデフォルトの余白によるものです。デフォルトでは14です

あなたが設定することができbtn.setMargin(new Insets(2, 0, 2, 0));、その余分なギャップが行きます。

于 2012-04-26T19:37:16.343 に答える