Collegare tra loro 2 finestre

di il
10 risposte

Collegare tra loro 2 finestre

Ciao a tutti,
qualcuno di voi mi sa dire come sia possibile collegare tra loro due finestre (JForm) create con l'IDE NetBeans?
Mi spiego meglio. Nella finestra principale della mia applicazione ho un una menubar con 2 voci di menu.
Io vorrei che quando clicco sulla voce "File" -> "Apri Elenco", si aprisse una nuova finestra (JForm), creata anch'essa con NetBeans, che però si trova in un'altra classe dello stesso package che contiene semplicemente un FileChooser.
Grazie in anticipo per l'aiuto.

Fulvio

10 Risposte

  • Re: Collegare tra loro 2 finestre

    fulviot66 ha scritto:


    Io vorrei che quando clicco sulla voce "File" -> "Apri Elenco", si aprisse una nuova finestra (JForm), creata anch'essa con NetBeans, che però si trova in un'altra classe dello stesso package che contiene semplicemente un FileChooser.
    Parliamo di Swing?
  • Re: Collegare tra loro 2 finestre

    Sì, esatto
  • Re: Collegare tra loro 2 finestre

    fulviot66 ha scritto:


    Sì, esatto
    L'IDE comunque c'entra relativamente (poco). Avrai un JMenuItem per quella voce di menù. Registra un ActionListener sul JMenuItem e nel actionPerformed aprirai altro. Se quella è la classica voce che fa aprire la dialog per "sfogliare" il file-system, non ci sarebbe nemmeno bisogno di un altro frame, è sufficiente usare JFileChooser con la sua propria dialog.
  • Re: Collegare tra loro 2 finestre

    Ok, questo in teoria.
    In pratica?
    Cioè con il codice java?
  • Re: Collegare tra loro 2 finestre

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.SwingUtilities;
    
    public class Frame1 extends JFrame {
        public Frame1() {
            super("Esempio");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setSize(400, 300);
            setLocationRelativeTo(null);
    
            JMenuBar menuBar = new JMenuBar();
            JMenu fileMenu = new JMenu("File");
            JMenuItem apriFileMenuItem = new JMenuItem("Apri...");
    
            fileMenu.add(apriFileMenuItem);
            menuBar.add(fileMenu);
            setJMenuBar(menuBar);
    
            apriFileMenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    apriFile();
                }
            });
        }
    
        private void apriFile() {
            JFileChooser fileChooser = new JFileChooser();
            int r = fileChooser.showOpenDialog(this);
    
            if (r == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                // .....usa file
            }
        }
    
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new Frame1().setVisible(true);
                }
            });
        }
    }
  • Re: Collegare tra loro 2 finestre

    Perfetto!!!
    Ti ringrazio della gentilezza.

    Ciao
    Fulvio
  • Re: Collegare tra loro 2 finestre

    Il tuo esempio è perfetto,
    ma non riesco ad adattarlo al mio programma.
    NetBeans genera ogni tipo di variabile come private ed il codice auto generato non si può modificare.
    Perciò continua a dare errori durante il parsing.
    Inoltre, capisco che per comodità tu abbia scritto una sola classe che contiene entrambe le finestre ed il main, ma sto cercando di usare il pattern MVC, per cui il main delega ad un controllore di istanziare la classe della finestra principale e poi dovrebbe riprendere il controllo ed istanziare anche la finestra del File Chooser.
    Forse però prima è meglio pranzare.
  • Re: Collegare tra loro 2 finestre

    Io uso NetBeans da una vita e mai e poi mai gli farei autogenerare il codice delle interfacce grafiche: impara a scrivere il codice a mano... NetBeans ti può essere d'aiuto su tantissime altre cose, ma dimentica il window builder.


    Ciao.
  • Re: Collegare tra loro 2 finestre

    @LeleFT Grazie della tua opinione che rispetto, ma non condivido: infatti, dopo un po' di ricerca ho scoperto che nella finestra proprietà di ogni oggetto si possono inserire porzioni di codice personalizzato per ogni tipo di evento, azione, etc.
  • Re: Collegare tra loro 2 finestre

    Però nel momento in cui ti trovi ad avere questi dubbi, se scrivessi del codice senza disegnarlo con l'IDE, riusciresti senza problemi a districarti, invece ti trovi in difficoltà per un'inezia.
    Poi la finestra del JFileChooser la apre il sistema operativo, è inutile che un azione così scarna la vai a costruire in una classe apposita, poi se vuoi crearti una finestra personalizzata, allora lì sarebbe un'altra storia.
Devi accedere o registrarti per scrivere nel forum
10 risposte