E' piuttosto banale (non serve nemmeno un booleano).
Un esempio completo.
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class NoDoppi extends JFrame {
private JFrame altraFinestra;
public NoDoppi() {
Container c = getContentPane();
c.setLayout( null );
JButton cmd = new JButton("Apri finestra");
cmd.setBounds(20, 20, 120, 30);
cmd.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
apriFinestra();
}
});
c.add( cmd );
setTitle("Niente doppioni");
setSize(800, 600);
setLocationRelativeTo( null );
setDefaultCloseOperation( EXIT_ON_CLOSE );
}
private void apriFinestra() {
if (altraFinestra != null) {
altraFinestra.setVisible( true );
altraFinestra.toFront();
} else {
altraFinestra = new JFrame("Altra finestra");
altraFinestra.add(new JLabel("Label"), BorderLayout.NORTH);
altraFinestra.setSize(400, 400);
altraFinestra.setLocationRelativeTo(this);
altraFinestra.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
altraFinestra.setVisible( true );
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
NoDoppi nd = new NoDoppi();
nd.setVisible( true );
}
});
}
}
Ciao.