Проблема в том, что вы используете ||
(или) вместо &&
(и).Ваши if
тесты не требуют, чтобы нажатая клавиша была ENTER;они требуют, чтобы клавиша была ENTER, или , выбрана одна из радиокнопок (Angle или Radians).
Все, что сказано… это не имеет значения, потому что вы не должны использоватьKeyListener для этого.Обычно вы проверяете пользователя, нажимающего Enter в JTextField, путем добавления ActionListener , но JFormattedTextField имеет лучший способ, который контролирует не только Enter, но и потерю фокуса: документация для свойства значения JFormattedTextField утверждает, что это связанное свойство, что означает, что вы можете прослушивать изменения в этом свойстве:
formattedTextField.addPropertyChangeListener("value",
new PropertyChangeListener() {
@Override
public void propertyChangeEvent(PropertyChangeEvent event) {
Double newValue = (Double) event.getNewValue();
if (newValue != null) {
if (angle.isSelected()) {
double radians = Math.toRadians(newValue);
resultLabel.setText(
newValue = + " ° = " + radians + " radians");
} else {
double degree = Math.toDegrees(newValue);
resultLabel.setText(
newValue + " radians = " + degree + " °");
}
}
}
});