Witajcie!

Pracuję nad aplikacją do uruchamiania testów automatycznych. W aplikacji zostało zaimplementowanie uruchamianie się określonego zdarzenia (metody) o zadanej przez użytkownika godzinie. Oczywiście zakładam, że aplikacja musi być uruchomiona w momencie włączenia się testu. Piszę tak na prawdę w sprawie porady - to co napisałem działa, ale według mnie to jest bardzo toporna metoda. Chciałem wam przedstawić wycinek z całego kodu programu, który jest odpowiedzialny za uruchomienie metody o określonej porze:


if(comboBox.getSelectedIndex() == 1) {
    test.setTestType("Moduł Obrony");
    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            try {
                test.defenceTestSet();
            } catch (ClassNotFoundException | IOException e) {
                e.printStackTrace();
            }
        }
    };
    Timer t = new Timer(delay, taskPerformer);
    t.setRepeats(false);
    t.start();
} if(comboBox.getSelectedIndex() == 2) {
    test.setTestType("Moduł Logowania");
    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            test.loginTestSet(uni, login, pass);
        }
    };
    Timer t = new Timer(delay, taskPerformer);
    t.setRepeats(false);
    t.start();
}

Mały komentarz do kodu: W zależności od wybranej opcji JComboBoxa uruchamiają się odpowiednie metody, delay jest wyliczany na podstawie różnicy dat (data testu - bieżąca data), następnie tworzony jest obiekt typu Timer. Chodzi o to, że strasznie toporny mi się wydaje ten kod, ponieważ do każdego przypadku trzeba tworzyć osobną klasę anonimową, a chodzi przecież o jedno wywołanie metody, tu nasuwa się pytanie - czy da się to zrobić w lepszy sposób, tzn. użyć odpowiedniej biblioteki (znalazłem Quartz, ale nigdy nie używałem), albo to po prostu inaczej napisać bardziej czytelnie.

Pozdrawiam serdecznie!