I'm trying to create a program where you press start and a new JFrame comes up with 3 buttons , you have to switch the button after you click on it using a random , I'm fairly new to java so I don't know what to do. Thank you
package code;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Timer;
public class StartListener implements java.awt.event.ActionListener {
private int counter;
private Game Ga;
private JFrame z;
private int x;
public StartListener(Game a, int co){
    Ga=a;
    counter = co;
}
public void actionPerformed(ActionEvent e) {
        Timer time = new Timer(10000,new Time(Ga));
        time.start();
        z = new JFrame("Sequence game"); 
        FlowLayout fl = new FlowLayout(0, 50, 40);    
        z.getContentPane().setLayout(fl);
        z.setVisible(true);
        JButton a = new JButton("A"); 
        Font f = a.getFont(); 
        Font myFont = f.deriveFont(Font.BOLD, f.getSize()*4); 
        a.setSize(200,100); 
        a.setVisible(true); 
         JButton b = new JButton("B"); 
        b.setVisible(true); 
        b.setSize(200,100);
        JButton c = new JButton("C");
        c.setVisible(true);
        c.setSize(200,100);
        z.getContentPane().add(a);
        z.getContentPane().add(b);
        z.getContentPane().add(c);
        z.pack();
        Random r = new Random(); 
        x=r.nextInt(3);
        figure(a,b,c,x,myFont,f);}
public void figure(JButton a,JButton b, JButton c, int x, Font myFont,Font           f){
        if(x==0){ 
            a.setEnabled(true);
            b.setEnabled(false);
            c.setEnabled(false);
            a.setFont(myFont);
            b.setFont(f);
            c.setFont(f);
            x =buttonA(a);
            figure(a,b,c,x,myFont,f);
                ;} 
        else if(x==1){ 
            a.setEnabled(false);
            b.setEnabled(true);
            c.setEnabled(false);
            a.setFont(f);
            c.setFont(f);
            b.setFont(myFont); 
                x = buttonB(b);
                figure(a,b,c,x,myFont,f);
                }
        else if(x==2){ 
            a.setEnabled(false);
            b.setEnabled(false);
            c.setEnabled(true);
            a.setFont(f);
            b.setFont(f);
            c.setFont(myFont);
            x = buttonC(c);
                    figure(a,b,c,x,myFont,f);
                    }
                } 
public int buttonA(JButton a){
    Random r = new Random();
    int rand = 0;
    a.addActionListener(new Something(Ga));
    rand = r.nextInt(3);
    return rand;
}
public int buttonB(JButton b){
    Random r = new Random();
    int rand = 0;
    b.addActionListener(new Something(Ga));
    rand=r.nextInt(3);
    return rand;
}
    public int buttonC(JButton c){
    Random r = new Random();
    int rand=0;
    c.addActionListener(new Something(Ga));
    rand = r.nextInt(3);
    return rand;
}
}
And here's the code for Something
package code;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Something implements ActionListener {
private Game G;
public Something(Game a){
G = a;
}
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
            G.increment();
}
}
Here's the error :
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
    at java.awt.Component.enable(Unknown Source)
    at java.awt.Component.setEnabled(Unknown Source)
    at javax.swing.JComponent.setEnabled(Unknown Source)
    at javax.swing.AbstractButton.setEnabled(Unknown Source)
 
    