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!