I have an application which has 4 steps 2 perform. The list of steps are in the BorderLayout.WEST(). After each step has completed, that particular step name will turn grey and the next step will turn black color.

BorderLayout.CENTER() contains a JPanel which holds the component that prompts for user input for the corresponding step.

My previous (limited) Swinging experiences is to always do everything inside the constructor. But apparantly it doesn't work here. How should i be coding this?

The following is the code i've done so far
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BfsGUI extends JFrame{
	public static final int WIDTH=600;
	public static final int HEIGHT=400;

	private static JPanel welcomePanel=new JPanel();

	private static JPanel displayPanel=new JPanel(new GridLayout(5,1));

	private static JLabel operationTitle=new JLabel();

	private static JPanel operationPanel=new JPanel();
	//List of operations in operation panel
	static JLabel sTable=new JLabel("Select distance table");
	static JLabel sDest=new JLabel("Select destination");
	static JLabel sStartCity=new JLabel("Select start city");
	static JLabel sNextCity=new JLabel("Select next city");

	public static JLabel statusLabel=new JLabel("Status");

	private DistanceTable dt;
	private BfsTSPSolver solver;

	public BfsGUI(){
		super("TSP Solver Application");
		setSize(WIDTH,HEIGHT);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());

		//Sets welcome panel
		welcomePanel.setBorder(BorderFactory.createRaisedBevelBorder());
		welcomePanel.setBackground(Color.WHITE);

		JLabel welcome=new JLabel("Welcome to BFS TSP Solver");
		welcomePanel.add(welcome);
		add(welcomePanel, BorderLayout.NORTH);

		//Sets the layout for operation panel
		operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.Y_AXIS));
		//Sets operation panel
		operationPanel.setBorder(BorderFactory.createEtchedBorder());
		operationPanel.setBackground(Color.WHITE);
		sTable.setForeground(Color.GRAY);
		sDest.setForeground(Color.GRAY);
		sStartCity.setForeground(Color.GRAY);
		sNextCity.setForeground(Color.GRAY);
		operationPanel.add(sTable);
		operationPanel.add(sDest);
		operationPanel.add(sStartCity);
		operationPanel.add(sNextCity);
		add(operationPanel, BorderLayout.WEST);

		//Sets display panel
		displayPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
		displayPanel.setBackground(Color.WHITE);
		displayPanel.add(operationTitle);

		add(displayPanel, BorderLayout.CENTER);
		add(statusLabel, BorderLayout.SOUTH);
	}

	public static void run1(){
			sTable.setForeground(Color.BLACK);
			operationTitle.setText("Select distance table");
		
			final JRadioButton selectDefaultTable=new JRadioButton("Default distance table", true);
			final JRadioButton selectUserTable=new JRadioButton("User distance table");
			final JTextField inputFileName=new JTextField("fileName.txt", 10);
		
			//Groups radio buttons, so that one on the other will off
			ButtonGroup group=new ButtonGroup();
			group.add(selectDefaultTable);
			group.add(selectUserTable);

			//NEXT button
			JPanel buttonPanel=new JPanel();
			buttonPanel.setOpaque(false);
			JButton nextButton=new JButton("NEXT");
			buttonPanel.add(nextButton);

			nextButton.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					if(selectDefaultTable.isSelected()){
						statusLabel.setText("Default distance table selected");
					}else{
						UserDT.readDT(inputFileName.getText());
						//nextOperationCount=false;
					}
				}
			});		
			displayPanel.add(selectDefaultTable);
			displayPanel.add(selectUserTable);
			displayPanel.add(inputFileName);
			displayPanel.add(buttonPanel);
	}

	public static void run2(){
			sTable.setForeground(Color.GRAY);
			sDest.setForeground(Color.BLACK);
			operationTitle.setText("Select destination");

			JLabel l1=new JLabel("Case 1");
	}

	public static void run3(){
			sDest.setForeground(Color.GRAY);
			sStartCity.setForeground(Color.BLACK);
			operationTitle.setText("Select start city");
	}

	public static void run4(){
			sStartCity.setForeground(Color.GRAY);
			sNextCity.setForeground(Color.BLACK);
			operationTitle.setText("Select next city");
	}

	public static void main(String[] args){
		BfsGUI gui=new BfsGUI();
		gui.setVisible(true);
		run1();
		run2();
		run3();
		run4();
	}
}