Newsgroup: it.comp.java
Titolo: bloccare un JFrame sotto

Ho un Jframe dal quale lancio una seconda finestra (sempre Jframe).
Esiste
il modo per bloccare la prima finestra fino a che non esco dalla finestra
secondaria??
Grazie
--------------------------------
Inviato via 
http://usenet.iol.it

Una soluzione č: puoi vedere se la finestra che dovrebbe stare sotto, riceve
il focus, in quel caso, rimetti in primo piano la seconda finestra.

...


> Il secondo metodo è un pò più casereccio, devi avere ........[CUT]
Ciao Pietro, puoi spiegarmi meglio questo secondo metodo?

 secondaria??
Tanto per dirne una se hai necessariamente bisogno di utilizzare un Frame
piuttosto che un oggetto
di tipo Dialog potresti inserire nel Frame padre un metodo del tipo
public class ParentFrame extends Frame implements FocusListener
{
    private Vector vctChild = new Vector(0,1);
    public ParentFrame(){
        super etc etc..
        vctChild.addElement(this);
        addFocusListener(this);
        ..........
    }
    /*
            per far funzionare correttamente sto metodo,
            interpretalo come uno stack, il primo Frame ad essere
registrato(b==true)
            deve essere l'ultimo ad essere deregistrato (b == false)
            e cosě via per tutti gli elementi ok?
    */
    public void register(Frame fr , boolean b)
    {
        if(b){
            vctChild.addElement(fr);
            fr.addFocusListener(this);
        }
        else{
            fr.removeFocusListener(this);
            vctChild.removeElement(fr);
        }
        ((Frame)vctChild.lastElement()).setEnabled(!b);
     }
    public void focusLost(FocusEvent e){}
    public void focusGained(FocusEvent e){
        if(e.getSource() != vctChild.lastElement())
            ((Frame)vctChild.lastElement()).requesFocus();
    }
}
a sto punto non devi far altro che ridefinire (se non vuoi effettuare una
chiamata esplicita a
register) il metodo setVisible() dei "figli"
public void setVisible(boolean b){
    parentFrame.register(this b);
    super.setVisible(b);
}
non so se ti sono stato utile o se era proprio questo che volevi sapere ,
semmai fammi sapere
ciao  :)

Vedi se capisci dall'esempio:
package untitled1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Madre extends JFrame {
  public Madre() {
    super(" Madre");
    JButton bottoneMadre = new JButton("Premimi");
    bottoneMadre.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          apriFiglia();
    }});
    getContentPane().add(bottoneMadre);
    setSize(400, 400);
    show();
  } // fine del costruttore madre
  public static void main(String[] args) {
    Madre madre = new Madre();
  } // fine del main
  public void apriFiglia() {
    // disabilito la finestra
**************************************************
    this.setEnabled(false);
    Figlia figlia = new Figlia(this);
  } // fine del metodo chiudiFiglia
} // fine della classe Madre
package untitled1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Figlia extends JFrame {
  JFrame madre;
  public Figlia(JFrame chiamante) {
    super(" Figlia");
// recupero la finestra chiamante
**********************************************
    madre = chiamante;
    JButton bottoneFiglia = new JButton("Premimi");
    bottoneFiglia.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          chiudiFiglia();
    }});
    getContentPane().add(bottoneFiglia);
    setSize(200, 200);
    show();
  } // fine del costruttore figlia
  public void chiudiFiglia() {
// riabilito la madre
**********************************************************
    madre.setEnabled(true);
    this.dispose();
  } // fine del metodo chiudiFiglia
} // fine della classe figlia
Altrimenti se mi scrivi una mail al mio indirizzo ti spedisco i file!
Ciao a presto. Pietro
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG