Wie kann ich eine lange IF-ELSE-Kette vereinfachen, wenn ich JComBobox-Modelle basierend auf Enum-Kategorien festlegt?
Posted: 12 May 2025, 01:35
Ich arbeite an einem Java Swing Unit Converter. Der Benutzer wählt eine Einheitskategorie aus einem jcombobox aus. Basierend auf dieser Auswahl aktualisiere ich zwei weitere jcombobox mit entsprechenden Enum -Werten (), Gewicht.Values () usw.).
Derzeit sieht meine Methode so aus:
Dies funktioniert, aber es ist wiederholt und fühlt sich schwer zu pflegen.>
Code: Select all
Length.values()
Derzeit sieht meine Methode so aus:
Code: Select all
private void selectUnit(ActionEvent e) {
if (view.getCategoryBox().getSelectedItem().toString().equals("LENGTH")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Length.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Length.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("WEIGHT")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Weight.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Weight.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("TEMPERATURE")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Temperature.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Temperature.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("TIME")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Time.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Time.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("VOLUME")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Volume.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Volume.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("AREA")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Area.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Area.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("SPEED")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Speed.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Speed.values()));
} else if (view.getCategoryBox().getSelectedItem().toString().equals("ENERGY")) {
view.getInputBoxUnit().setModel(new DefaultComboBoxModel(Energy.values()));
view.getOutputBoxUnit().setModel(new DefaultComboBoxModel(Energy.values()));
}
}