Notifiche tra JFrame

di il
1 risposte

Notifiche tra JFrame

Spiego il problema: ho una framePrincipale che contiene un pulsante, quando ci clicco si apre una frameSecondaria...qui ci sono due pulsanti, "Si" e "No"...se clicco su "Si", devo chiudere la frameSecondaria e notificare alla framePrincipale che ho premuto si...ah, dimenticavo, la framePrincipale quando viene premuto il bottone si deve mettere in attesa e aspettare che venga premuto "Si" o "No" nella frameSecondaria...e comportarsi quindi di conseguenza...
Allego qua le 3 classi, di modo che mi potete far vedere le modifiche sul codice direttamente..

Classe Main
public class Main {
	
	public static void main(String[] args) {
		new framePrincipale();
	}
}
Classe framePrincipale
import java.awt.event.ActionEvent;

public class framePrincipale implements ActionListener {

	private final JFrame window;
	private final JButton premi;
	
	private boolean scelta;
	
	public framePrincipale() {
		window = new JFrame("Finestra principale");
		window.setSize(500,500);
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		premi = new JButton("Spingimi!");
		premi.addActionListener(this);
		
		window.add(premi);
		window.setVisible(true);
	}
	public void actionPerformed(ActionEvent e) {
		new frameSecondaria();
		
		scelta = frameSecondaria.getScelta();
		
		if (scelta) {
			System.out.println("Ha premuto si");
			window.dispose();
		}
		else
			System.out.println("Ha premuto no");
	}
}
frameSecondaria

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class frameSecondaria implements ActionListener {
	
	private final JFrame window;
	private final JButton si;
	private final JButton no;
	private static boolean scelta = false; 
	
	public frameSecondaria() {
		window = new JFrame("Frame Secondaria");
		window.setSize(200, 200);
		window.setLayout(new FlowLayout());
		
		si = new JButton("Si");
		si.addActionListener(this);
		no = new JButton("No");
		no.addActionListener(this);
		
		window.add(si);
		window.add(no);
		window.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		
		if (source.equals(si)) {
			scelta = true;
			window.dispose();
		}
		else if (source.equals(no)) {
			window.dispose();
		}
	}
	
	public static boolean getScelta() {
		return scelta;
	}
}
Ah, come potete notare molto rozzamente avevo cercato di settare un boolean nella frameSecondaria per poi ritornarlo nella framePrincipale, ma ovviamente non va', sono convinta sia totalmente sbagliato come approccio...e comunque non rimane in attesa la framePincipale..
Come già detto in un altra discussione credo sia questione di wait() e notify() che non ho capito come usare!

1 Risposte

  • Re: Notifiche tra JFrame

    Non è sbagliato come approccio, ma è sbagliata probabilmente la realizzazione.

    ragione così:
    passa il framePrinciale stesso alla classe frameSecondario e dà lì poi puoi manipolare la classe frameprincipale, e quindi manipolare una qualche variabile che tiene memorizzata la pressione di si o no
Devi accedere o registrarti per scrivere nel forum
1 risposte