JToggleButton - 如何获得选定状态?

时间:2015-06-16 01:08:05

标签: java swing frame jtogglebutton

我正在制作一个BMR计算器,我的一个面板为用户提供了一个选项,可以改变他们希望输入高度的方式,从cm到ft / inch。

这是处理上述小组的代码块。

    // 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()错误。

下面是如何出现的图像。您可以看到,即使选择了脚,也不会显示任何文本字段。我该怎么做才能解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要添加一个监听器:

cmButton.addActionListener(event->{

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

feetButton.addActionListener(event-> {

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

如果您使用JToggleButton,我想您只想使用一个切换GUI的ToggleButton。如果是这种情况,请删除cmButtonfeetButton。并且只添加一个新的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`.