0

私は BMR 計算機を作成しています。私のパネルの 1 つは、ユーザーが身長の入力方法を cm からフィート/インチに変更するオプションを提供します。

上記のパネルを扱うコードのブロックは次のとおりです。

    // Height JComponents
    heightLabel = new JLabel("Height:");
    heightCMField = new JTextField(4);
    heightFTField = new JTextField(3);
    heightFTLabel = new JLabel("ft");
    heightINCHLabel = new JLabel("inch");
    heightINCHField = new JTextField(3);
    cmButton = new JToggleButton("cm");
    feetButton = new JToggleButton("feet");
    heightPanel.add(heightLabel);


    if (cmButton.isSelected()) {
        heightPanel.add(heightCMField);
    } else if (feetButton.isSelected()) {
        heightPanel.add(heightFTField);
        heightPanel.add(heightFTLabel);
        heightPanel.add(heightINCHField);
        heightPanel.add(heightINCHLabel);
    } 

    heightPanel.add(cmButton);
    heightPanel.add(feetButton);

私の問題は、kg または cm ボタンを押してもテキスト フィールドが表示されないため、isSelected() を間違って使用したと考えられることです。

これがどのように表示されるかのイメージを以下に示します。足を選択してもテキスト フィールドが表示されないことがわかります。これを修正するにはどうすればよいですか?

ここに画像の説明を入力

4

1 に答える 1

0

リスナーを追加する必要があります。

cmButton.addActionListener(event->{

    /**
     * Code to show heightCMField.
     */
});

feetButton.addActionListener(event-> {

    /**
     * COde to show heightFTField and heightINCHField 
     */
});  

を使用している場合はJToggleButton、GUI を切り替える ToggleButton を 1 つだけ使用する必要があると思います。その場合は、 と を削除cmButtonfeetButtonます。そして、すべてを行う新しい ToggleButton を 1 つだけ追加します。

JToggleButton switchButton = new JToggleButton();
switchButton.setText("cm");  

switchButton.addActionListener(event->{

    if(switchButton.getText().equals("feet")) {

        switchButton.setText("cm");
        /* Code to show heightFTField and heightINCHField */
    } else if(switchButton.getText().equals("cm")) {

        switchButton.setText("feet");
        /* Code to show heightCMField */
    }
});  

You can also go for `ItemListener`.
于 2015-06-16T03:25:16.920 に答える