Mi è chiara la logica, solo che non riesco venirne a capo lato codice, probabilmente anche per carenze
Vi lascio qualche altre info e un po' di codice, on qualche domanda: se avete tempo e voglia di aiutarmi, grazie mille!

La mia classe Main ha come costruttore tutta la "costruzione" dell'interfaccia

codice:
public Main() {
		setTitle("WebCrawler");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblUrl = new JLabel("URL:");
		lblUrl.setBounds(12, 14, 70, 15);
		contentPane.add(lblUrl);
		
		url = new JTextField();
		url.setBounds(78, 12, 150, 19);
		contentPane.add(url);
		
                .......................................
        
		
	}
Vi è poi il main che mi crea appunto questa interfaccia
codice:
	public static void main(String[] args) {
		
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Main frame = new Main();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		

	}
Tramite la pressione del "bottone incriminato" poi parte tutto il funzionamento che ho descritto (creazione oggetto Crawler, tramite metodo interno a Main, che crea i thread con oggetto PageExplorer).

Come posso e si deve modificare Crawler e/o Main, affinchè io possa tenere traccia dell'oggetto Main esistente e passarlo nuovamente nella classe Main?

EDIT:
Se ho capito bene: devo tener traccia dell'oggetto frame creato nel main. Quindi quando vado a creare l'oggetto Crawler devo passargli come riferimento questo oggetto frame. Una volta riuscito in ciò, nel metodo della classe Crawler (quello dove creavo un nuovo oggetto per intenderci) quando vado a richiamare il metodo del Main che mi modifica l'interfaccia, devo passargli frame?