Java: ¿Cómo paso las variables de JButton ActionListener a la clase principal?

Estoy tratando de hacer un programa que genere un número aleatorio cuando se hace clic en un botón y luego la salida se muestra en la pantalla. Sin embargo, no puedo pasar la variable que contiene el número aleatorio a la clase con JLabel para que pueda usarse en esa clase. Escribí un programa que es tan simple como podría demostrarlo:

import java.awt.BorderLayout;
import java.awt.Panel;
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.JLabel;

public class Main{
    public static void main(String[] args){

    JFrame mainFrame = new JFrame("Experiment");
    mainFrame.setSize(500,500);
    mainFrame.setVisible(true);

    Panel panel = new Panel();
    mainFrame.getContentPane().add(panel);

    JLabel output = new JLabel("This is where the result from the num variable in the numGenerator class would go"); 
    panel.add(output); 

    JButton numGenerator = new JButton("Generate Number");
    panel.add(numGenerator);
    numGenerator.addActionListener(new numGenerator());

    }

static class numGenerator implements ActionListener{
    public void ActionPerfomed (ActionEvent e){

        int num; //This is the variable I want to be passed to the
                 //Main class so it can be displayed in the "output" Jlabel.

        Random dice = new Random();
        num = dice.nextInt(3);

    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }
}
}

Vi otra ayuda en línea para crear un objeto de la clase y luego usarlo en la clase en la que desea que esté la variable, pero no pude hacer que eso funcionara en esta situación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta