我正在做一个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()。
下面是这张图片的外观。您可以看到,即使选择了英尺,也不会显示任何文本字段。我能做些什么来解决这个问题呢?

发布于 2015-06-16 11:25:17
您需要添加一个监听器:
cmButton.addActionListener(event->{
/**
* Code to show heightCMField.
*/
});
feetButton.addActionListener(event-> {
/**
* COde to show heightFTField and heightINCHField
*/
}); 如果您使用的是JToggleButton,我想您只需要使用一个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`.https://stackoverflow.com/questions/30857345
复制相似问题