JToggleButton - как получить выбранное состояние?
Я делаю калькулятор 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);
Моя проблема в том, что когда я нажимаю кнопку "кг" или "см", текстовые поля не отображаются, поэтому я думаю, что я использовал isSelected() как-то не так.
Изображение того, как это выглядит ниже. Вы можете видеть, что никакие текстовые поля не появляются, даже когда ноги выбраны. Что я могу сделать, чтобы это исправить?
1 ответ
Вам нужно добавить слушателя:
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`.