Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315

    [Swing] sincronizzazione componenti

    Ho un frame con un JFileChooser. Il listener ad esso associato per aprire il file selezionato prevede l'apertura di un nuovo frame con una combo e un button per la scelta del valore.

    Il mio problema è fare in modo che il listener "aspetti" che l'utente scelga prima il valore della combo e poi proseguire con il proprio funzionamento.

    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [Swing] sincronizzazione componenti

    Originariamente inviato da koala81
    Ho un frame con un JFileChooser. Il listener ad esso associato per aprire il file selezionato prevede l'apertura di un nuovo frame con una combo e un button per la scelta del valore.

    Il mio problema è fare in modo che il listener "aspetti" che l'utente scelga prima il valore della combo e poi proseguire con il proprio funzionamento.
    Allora non un nuovo frame ma una nuova dialog (JDialog) e sopratutto "modale".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    So che magari per molti sarà facile, ma non potresti farmi un piccolissimo esempio?
    Non ho ben capito come usarlo...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da koala81
    So che magari per molti sarà facile, ma non potresti farmi un piccolissimo esempio?
    Non ho ben capito come usarlo...
    codice:
    class MiaDialog extends JDialog {
        public MiaDialog(JFrame parente) {
            super(parente, "Titolo", true);    // true = modale
    
            // altre inizializzazioni (componenti, dimensionamento dialog, ecc...)
        }
    }
    Poi, dove ti serve:

    codice:
    MiaDialog dialog = new MiaDialog(riferimentoAlTuoFrame);
    dialog.setVisible(true);    // si rimane bloccati qui dentro finché non si chiude la dialog!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    Ah ecco...ora ho capito...
    Un'ultima domanda: supponi che tu abbia un metodo che apre un frame...da questo frame l'utente scrive qualcosa che a te serve per continuare l'esecuzione del metodo.
    Come implementeresti una cosa simile?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da koala81
    Un'ultima domanda: supponi che tu abbia un metodo che apre un frame...da questo frame l'utente scrive qualcosa che a te serve per continuare l'esecuzione del metodo.
    Come implementeresti una cosa simile?
    Ma è riferito all'uso di una dialog come detto sopra?
    Se usi una dialog come ho fatto l'esempio, si ritorna dal setVisible(true) solo dopo che la dialog è stata chiusa. E appena dopo puoi comunque ottenere le informazioni che ti servono e che sono state inserire dall'utente nella dialog.

    Se ad esempio nella tua dialog c'è un campo JTextField per dell'input, beh, basta che nella tua classe della dialog metti un metodo pubblico es. getTesto() che legge dal text field.
    Quindi puoi fare es.

    MiaDialog dialog = new MiaDialog(riferimentoAlTuoFrame);
    dialog.setVisible(true);
    String testo = dialog.getTesto();

    Insomma .. fai in modo che la tua classe della dialog ti possa fornire i dati che l'utente ha inserito.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    315
    Ma per uscita dalla Dialog intendi la DISPOSE?
    Immaginandomi un tastino ok che legge dalla text aerea, dentro questo tastino dovrei mettere l'acquisizione dalla textaerea e la chiusura(dispose) della dialog, giusto?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da koala81
    Ma per uscita dalla Dialog intendi la DISPOSE?
    Immaginandomi un tastino ok che legge dalla text aerea, dentro questo tastino dovrei mettere l'acquisizione dalla textaerea e la chiusura(dispose) della dialog, giusto?
    Esempio:

    codice:
    class MiaDialog extends JDialog {
        private JTextArea textArea;
    
        public MiaDialog(JFrame parente) {
            super(parente, "Input testo", true);
            setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    
            Container contentPane = getContentPane();
    
            textArea = new JTextArea(10, 30);
            JScrollPane scrollPane = new JScrollPane(textArea);
            JButton closeButton = new JButton("CHIUDI");
    
            contentPane.add(scrollPane, BorderLayout.CENTER);
            contentPane.add(closeButton, BorderLayout.SOUTH);
    
            closeButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    dispose();
                }
            });
            
            pack();
        }
    
        public String getTesto() {
            return textArea.getText();
        }
    }
    Poi si possono ovviamente fare diverse varianti.

    P.S. l'aspetto visivo non è il massimo ... ho usato BorderLayout ma è solo un esempio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.