Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: [JAVA] Swinj JDialog

  1. #1
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418

    [JAVA] Swinj JDialog

    Ciao a tutti, come faccio a "passare" delle variabili da una finestra JDialog al JFrame?
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    creai un costruttore del JFRame che prenda le variabili che gli passi (es. public myFrame(int i, String s))

    Poi su JDialog scrivi new myFrame(myInt, myString).

    Spero di essere stato chiaro... :mavieni:

  3. #3
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    Oppure usi la gestione degli eventi: il JFrame implementa l'interfaccia EventListener e il JDialog genera eventi (che possono quindi contenere le variabili che ti interessano) che vengono "lanciati" verso l'EventListener.
    Se hai bisogno di chiarimenti chiedi.
    Ciao
    ghinz

  4. #4
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    [supersaibal]Originariamente inviato da ghinz
    Oppure usi la gestione degli eventi: il JFrame implementa l'interfaccia EventListener e il JDialog genera eventi (che possono quindi contenere le variabili che ti interessano) che vengono "lanciati" verso l'EventListener.
    Se hai bisogno di chiarimenti chiedi.
    Ciao [/supersaibal]
    cioè in pratica dovrei fare
    public class test extends JFrame implements EventListener{


    mentre nella JDialog, cosa devo fare?
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  5. #5
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    Allora:
    prima creati una classe "Evento" del tipo

    codice:
    // aggiungi magari del codice per fare il get/set di un oggetto generico che sarà il valore che ti interessa trasportare dal dialog al frame.
    public class mioEvento extends EventObject {
    }
    
    public class frame extends JFrame implements EventListener { 
    public void mioEventoPerformed(mioEvento e) {
    // qui dentro leggi il contenuto di mioEvento (il valore) e fai quello che devi fare
    }
    }
    
    public class dialog extends JDialog {
    Vector listeners = new Vector();
    public void addMioEventoListener(EventListener el) {
    listeners.add(el);
    }
    public void removeMioEventoListener(EventListener el) {
    listener.remove(el);
    }
    public void notificaMioEvento(mioEvento ev) {
    for (int i=0;i<listeners.size();i++) {
    (EventListener)listeners.get(i).mioEventoPerformed(ev);
    }
    }
    }
    Quando crei il dialog, gli "registri" dentro il frame come EventListener:
    codice:
    frame f = new frame(...);
    dialog d = new dialog(...);
    d.addMioEventoListener(f);
    Adesso quando vuoi passare un valore da dialog a frame, fai così (da dentro dialog):
    codice:
    MioEvento e = new MioEvento();
    e.setValore(valore);
    notificaMioEvento(e);
    Facendo così tutti i listener registrati in dialog vengono avvisati del nuovo evento che hai appena creato. Il loro metodo mioEventoPerformed provvederà a gestire il valore (e.getValore()....).

    Ho tirato un po' via, spero tu ci capisca qualcosa...
    Ciao
    ghinz

  6. #6
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Io ho il seguente codice, e mi domandavo come potevo integrare quello che mi hai consigliato con esso?

    public class test extends JFrame implements EventListener{

    private JDialog dialog;

    public test(){

    setTitle("test");
    setBounds(100,100,420,300);

    JMenuBar menuBar = MenuBar1();
    JPanel northPanel = new JPanel();
    JToolBar toolbar = ToolBar1();
    northPanel.add(toolbar);

    getContentPane().add(BorderLayout.NORTH,northPanel );

    setJMenuBar(menuBar);

    dialog = new JDialog(this,"",true);
    dialog.setBounds(300,100,250,150);
    dialog.getContentPane().setLayout(new BorderLayout());
    dialog.setDefaultCloseOperation(JFrame.HIDE_ON_CLO SE);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    }

    class voceJmenuBar implements ActionListener {
    public void actionPerformed(ActionEvent e) {

    JPanel northPanel = new JPanel();
    provaField = new JTextField(2);

    northPanel.add(provaField);
    northPanel.setLayout(new FlowLayout(FlowLayout.LEFT));

    dialog.getContentPane().add(BorderLayout.NORTH,nor thPanel);

    dialog.setVisible(true);
    }
    }
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  7. #7
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Cioè il mio problema è il seguente io all'interno della JDialog ho un JTextField, ecco quello che io scrivo in questo JTextField, vorrei che venisse ripreso una volta che io chiudo la JDialog, all'interno del JFrame!

    Non so se mi sono spiegato...
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  8. #8
    * Crea il JFrame.
    * Crea il JDialog.
    * Quando chiudi il dialog in seguito alla pressione del pulsante OK salva il contenuto del text field in una variabile privata (chiamiamola _editedText) del dialog.Implementa un metodo getEditedText() che ti ritorni _editedText.
    * Dal frame invoca getEditedText() per ottenere il test editato nel dialog.

    Penso sia la soluzione più semplice e funzionante.

  9. #9
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Questo è l'action del pulsante ok

    ok.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    try{
    dialog.setVisible(false);

    prova = provaField.getText();

    System.out.println(prova);
    }
    catch (Exception ex)
    {}
    }
    });


    e fin qui ci sono, ora la mia domanda è questa come faccio a invocarlo dal Jframe?
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  10. #10
    Modifica il programma. Crea una classe che estenda JDialog e forniscile il metodo getEditedText()...
    codice:
    public class EditDialog extends JDialog {
    
        private String _editedText;
    
        ...
        ...
    
        public String getEditedText() {
            return _editedText;
        }
    
        ...
        ...
    
    }
    è scontato che l'inizializzazione del dialog viene fatta all'interno del costruttore dello stesso.

    L'uso che ne farai all'interno del frame è:

    codice:
    EditorDialog dialog = new EditorDialog(this);
    dialog.show();
    String editedText = dialog.editedText();

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.