我正在制作一个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()错误。
下面是如何出现的图像。您可以看到,即使选择了脚,也不会显示任何文本字段。我该怎么做才能解决这个问题?
答案 0 :(得分:0)
您需要添加一个监听器:
cmButton.addActionListener(event->{
/**
* Code to show heightCMField.
*/
});
feetButton.addActionListener(event-> {
/**
* COde to show heightFTField and heightINCHField
*/
});
如果您使用JToggleButton
,我想您只想使用一个切换GUI的ToggleButton。如果是这种情况,请删除cmButton
和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`.