-4

3 つのテキスト フィールドと 2 つのラジオ ボタン (はいまたはいいえを選択するため) を含む jframe があります。

次のようになります。 ここに画像の説明を入力

しかし、私のコードでは、これは次のとおりです。 ここに画像の説明を入力

私のコード:

public class editFrame extends JFrame {

JButton saveButton;
JButton cancelButton;
JRadioButton radioB1;
JRadioButton radioB2;

public editFrame() {

    JPanel wrapper = new JPanel();
    wrapper.add(createForm());
    add(wrapper, BorderLayout.WEST);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setBounds(100, 50, 500, 600);
    this.setVisible(true);
}

public JPanel createForm() {
    String[] labels = {"ID", "Name", "Date"};
    JPanel panel = new JPanel();

    JTextField idtf = new JTextField(10);
    JTextField nametf = new JTextField(10);
    JTextField datetf = new JTextField(10);
    panel.add(idtf);
    panel.add(nametf);
    panel.add(datetf);

    radioB1 = new JRadioButton("Yes");
    radioB2 = new JRadioButton("No");
    ButtonGroup group = new ButtonGroup();
    group.add(radioB1);
    group.add(radioB2);
    panel.add(radioB1);
    panel.add(radioB2);
    saveButton = new JButton("update");
    cancelButton = new JButton("Cancel");
    panel.add(saveButton);
    panel.add(cancelButton);

    SpringLayout sL = new SpringLayout();
    panel.setLayout(sL);
    SpringUtilities.makeCompactGrid(panel, 3, 2, 100, 50, 15, 20);

    return panel;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            editFrame edF = new editFrame();
        }
    });
}

借用ステータス テキストは、ラジオ ボタンの横に表示されません。私の 2 番目の主な問題は、このコードではテキスト フィールドにアクセスできないことです。後でテキスト フィールドにアクセスする必要があります...

4

1 に答える 1

3

まず、ラジオのラベルを作成してパネルに追加しないため、ラジオのラベルは表示されません。それを作成し、radioB1 の前にパネルに追加します。また、radioB2 の前に目に見えない (空の) ラベルを追加する必要があります (または、他のフィラー コンポーネントを使用してセルを埋めます。 html#filler )。

また、saveButton の代わりに別のフィラー コンポーネントをパネルに追加することもできます。次に、保存ボタンとキャンセル ボタンの両方を含む別のパネル (buttonPane) を作成し、cancelButton の代わりにこの buttonPane をメイン パネルに追加します。ボタンのパネルは BoxLayout を使用でき、ボタンの間に水平方向の接着剤を配置できます (上記のリンクを参照)。

それだけです。しかし、ここで 1 つの警告があります。後で参照できないように、ループ内で JTextField を作成しています。テキストを取得する必要がある場合。それらの参照を個々の変数として保持するか、配列に追加して、更新ボタンが押されたときに値を取得できるようにする必要があります。

于 2013-03-27T17:28:12.213 に答える