1

Eclipse で Window Builder を使用して に を追加しましたJTextFieldが、JPanel何を試しても、テキスト フィールドは次のように表示されます。

スクリーンショット
(出典:gyazo.com

優先サイズ、最大サイズと最小サイズを変更しようとしましたが、それでもこのように表示されます。

これを修正するにはどうすればよいですか? 私は何を間違えましたか?

前もって感謝します。

アップデート


コード: (すべて Google の Window Builder によって自動的に生成されます)

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import java.awt.Dimension;


public class Main extends JFrame {

private JPanel contentPane;
private JTextField textField;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Main frame = new Main();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Main() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);

    textField = new JTextField();
    textField.setSize(new Dimension(6, 3));
    textField.setMinimumSize(new Dimension(6, 5));
    textField.setMaximumSize(new Dimension(6, 3));
    textField.setPreferredSize(new Dimension(6, 3));
    contentPane.add(textField, BorderLayout.WEST);
    textField.setColumns(10);
}

}
4

1 に答える 1

2

FlowLayoutのデフォルトのレイアウトマネージャーを使用するだけですJPanel contentPane。これにより、コンポーネントの推奨サイズが考慮されます。

削除 (またはコメントアウト):

contentPane.setLayout(new BorderLayout(0, 0));

常にレイアウト マネージャーを使用し、サイズ変更のためにコンポーネントのsetXXXSizeメソッドを呼び出さないようにすることをお勧めします。必要に応じてオーバーライドできますgetPreferredSize

参照:レイアウト マネージャーなしで行う

于 2013-01-12T22:17:26.730 に答える