0

我正在制作一个 BMR 计算器,我的一个面板为用户提供了一个选项来更改他们希望输入身高的方式,从厘米到英尺/英寸。

这是处理所述面板的代码块。

    // 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。因此,如果是这种情况,请删除cmButtonand feetButton。并且只添加一个新的 ToggleButton 即可。

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 回答