Changing a JLabel in a JFrame several times within different time intervals when pressing a JButton

What i want to do: I already have a JFrame with the JLabel "status" and the JButton "button" and when I press the JButton i want the JLabel to show "a" for 10 seconds, Then "b" for 5 seconds and then "c". And in between the different letters i want a counter to go from 10 to 0 after the a and then after the b from 5 to 0. I have no idea how to solve it. With Thread.Sleep() everything just freezes and nothing happens. Here i use the swing Time class i also tried the util Time class but it didn't work either. The main problems are that it doesn't show the "a" at all, only the other letters and then timers often run simultaniously (so I see: 00,11,22,33,44,... or something similar that isn't supposed to happen) The timers should run one after another. Would be really happy if you helped me. The ultimate goal is that this program mixes different drinks. For example it puts water in a glass for 5 seconds and then juice for 10 seconds when i press the button only once. And theJLabel is supposed to show what is currently coming out of the machine. (and of course this isn't the whole class, just the most important parts to see what happens)

public class Gfx extends JFrame {

Jlabel status = new Jlabel("0");
JButton button = new JButton("Press");
int i;



private Timer timer = new Timer(1000, new ActionListener(){  

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(i--);
        if(i==0){
            timer.stop();
        }
    }

});


public void test(){
    status.setText("a");
        i = 10;
    timer.start();
    status.setText("b");
        i = 5;
        timer.start();
        status.setText("c");
}


private class Listener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource() == button){
            test();



        }
    }