Newsgroup: it.comp.java
Titolo: Newbie

Ciao a tutti,
questo è il mio primo post nel NG.
Mi sto esercitando con i primi programmi in Javae ho subito un problema:
Come faccio ad aprire un JFileChooser all'evento del menu Apri?
Nella showopendialog, devo inserire la finestra contenitore, ma come la
referenzio, super, this????
- ecco il codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Finestramenu extends Frame
{
    MenuItem apri=new MenuItem("Apri");
    MenuItem chiudi=new MenuItem("Chiudi");
    MenuItem salva=new MenuItem("Salva");
    MenuItem esci=new MenuItem("Esci");
    Menu file= new Menu("File");
    MenuBar barra = new MenuBar();
    Label risultato=new Label("Nessuna voce di menu cliccata");
    public Finestramenu()
    {
        setupEventi();
        file.add(apri);
        file.add(salva);
        file.add(chiudi);
        file.addSeparator();
        file.add("Menu Uscita");
        file.addSeparator();
        file.add(esci);
        barra.add(file);
        setMenuBar(barra);
        add(risultato);
        pack();
        show();
        addWindowListener(new FinestramenuWindowListener());
        }
    void setupEventi()
    {
        apri.addActionListener(new AscoltatoreMenu());
        salva.addActionListener(new AscoltatoreMenu());
        chiudi.addActionListener(new AscoltatoreMenu());
        esci.addActionListener(new AscoltatoreMenu());
        }
    public static void main(String[] arg)
    {
        new Finestramenu();
        }
class AscoltatoreMenu implements ActionListener
    {
   JFileChooser fc= new JFileChooser();
  public void actionPerformed (ActionEvent e)
        {
            risultato.setText("         Cliccato "+e.getActionCommand());
            if (e.getActionCommand().compareTo("Esci")==0) System.exit(0);
            if (e.getActionCommand().compareTo("Apri")==0) {
             fc.showOpenDialog("COSA CI METTO QUI");
            }
        }
    }

 ha scritto nel messaggio 
news:Nltde.53365$Of5....@nntpserver.swip.net...


...che se non usi la classe interna...è "this"

Ecco l'implementazione che ho usato:
Passo come mi avete detto il riferimento al contenitore per il JFileChooser
    apri.addActionListener(new AscoltatoreMenu(this.getOwner()));
Nella classe dell'ascoltatore cero il costruttore che riceve il parametro,
lo referenzia ed č pronto per essere dato in pasto al howOpenDialog.
class AscoltatoreMenu implements ActionListener
    {
         JFileChooser fc = new JFileChooser();
         Window win;
          public AscoltatoreMenu(Window genitore){
              win=genitore;
             }
          public void actionPerformed (ActionEvent e){
            risultato.setText("         Cliccato "+e.getActionCommand());
            if (e.getActionCommand().compareTo("Esci")==0) System.exit(0);
            if (e.getActionCommand().compareTo("Apri")==0) {
                 fc.showOpenDialog(win);
              }
        }
    }
Due cose vi chiedo ancora:
- Il JFileChooser accetta come parametro al showOpenDialo, solo elementi
Window?
- Se avessi passato solo this e non this.getOwner, sarebbe stato passato
l'oggetto intero al costruttore.
Aspetto commenti e modifiche al codice.
Simohack