Creare un dialog con più widgets

di il
7 risposte

Creare un dialog con più widgets

Alla pressione di un pulsante nella finestra principale devo aprire un dialog che deve contenere una label e 5 buttons dei quali ognuno se premuto deve restituire un valore e chiudere il dialog.
purtroppo non trovo proprio niente su internet che assomigli a quello che chiedo io.

7 Risposte

  • Re: Creare un dialog con più widgets

    Qui trovi il tutorial sull'uso delle finestre di dialogo: https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
    Non troverai esattamente quello che vuoi tu ma ti fai un'idea su come funziona il tutto...

    JOptionPane ha molti metodi statici che aprono delle finestre con cui l'utente può interagire, ma sono comunque limitate.

    Quindi ti consiglio di creare una classe che faccia al caso tuo, la classe può estendere JDialog se vuoi che la finestra sia modale, cioè che blocchi il resto dell'applicazione fino a quando non viene chiusa (sia con l'icona in alto, sia se ne richiedi tu la chiusura).
    Aggiungere componenti a un JDialog è come aggiungerli a un JFrame, quindi puoi tranquillamente metterci dentro label, pulsanti e quant'altro.

    Poi sarai tu a gestire l'azione che desideri alla pressione di ogni pulsante: aggiungi dei listeners ai bottoni in cui richiederai la chiusura del JDialog e quant'altro desideri...
  • Re: Creare un dialog con più widgets

    PLAYER.RUNNER ha scritto:


    devo aprire un dialog che deve contenere una label e 5 buttons dei quali ognuno se premuto deve restituire un valore e chiudere il dialog.
    Se non hai esigenze specifiche su layout, aspetto o cose del genere, te la potresti cavare con JOptionPane. Un banale esempio:
    Object[] opz = { "Molto poco", "Poco", "Abbastanza", "Molto" };
    
    int r = JOptionPane.showOptionDialog(null, "Ti piacciono i gatti?", "Sondaggio",
            JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
            opz, opz[1]);
    
    // r == 0 --> "Molto poco"
    // r == 1 --> "Poco"
    // ec...
  • Re: Creare un dialog con più widgets

    Grazie mille, credo però che proverò a creare una classe nuova anche in modo da imparare qualcosa in più.

    nel codice che andbin ha scritto è possibile fare in modo che ogni pulsante restituisca un numero diverso scelto da me, oppure restituiscono il loro indirizzo nella lista o che altro?

    inoltre è possibile creare un dialog più dinamico(per esempio che chieda una stringa poi si dice ok la schermata cambia, ne chiede un'altra e poi si chiude?)

    come si può visualizzare un file explorer con un dialog per salvarci dei file di testo?

    un ultima cosa, ma quindi questi dialogs semplicemente danno un risulatato di un certo tipo? nel senso, come è scritto il loro codice, hanno un unico grande metodo che li visualizza e fa il return del valore digitato o premuto dall'utente?
  • Re: Creare un dialog con più widgets

    PLAYER.RUNNER ha scritto:


    nel codice che andbin ha scritto è possibile fare in modo che ogni pulsante restituisca un numero diverso scelto da me, oppure restituiscono il loro indirizzo nella lista o che altro?
    No, è l'indice (0, 1 ....) nell'array options passato. Oppure -1 se l'utente ha chiuso l'option pane in altro modo (es. ESC o pulsantino X).
    Generalmente non è un problema, nel senso che queste opzioni spesso sono fisse. Se sono "dinamiche" (per testo e/o quantità), chiaramente può essere più rognoso ma è comunque possibile risolvere.

    PLAYER.RUNNER ha scritto:


    inoltre è possibile creare un dialog più dinamico(per esempio che chieda una stringa poi si dice ok la schermata cambia, ne chiede un'altra e poi si chiude?
    Precisa meglio, non è chiaro. Cosa intendi? Una specie di "wizard"?

    PLAYER.RUNNER ha scritto:


    come si può visualizzare un file explorer con un dialog per salvarci dei file di testo?
    Il componente per "sfogliare" il file-system in Swing è JFileChooser.

    PLAYER.RUNNER ha scritto:


    un ultima cosa, ma quindi questi dialogs semplicemente danno un risulatato di un certo tipo? nel senso, come è scritto il loro codice, hanno un unico grande metodo che li visualizza e fa il return del valore digitato o premuto dall'utente?
    Detto così è troppo banalizzato .....
  • Re: Creare un dialog con più widgets

    Ok grazie, per dialog più dinamico intendo per esempio uno che chieda il nome del giocatore 1 poi si preme un pulsante ok, a questo punto la schermata cambia e esce una nuova casella di input come quella di prima che chiede il nome del giocatore 2 poi si preme di nuovo su ok e vengono restituiti i due nomi
  • Re: Creare un dialog con più widgets

    A questo punto non ti converrebbe creare una tua classe, con un frame/dialog che permette di inserire i nomi dei due giocatori in contemporanea?

    Qualcosa tipo questo (lascia stare l'aspetto dell'interfaccia, è solo l'idea):



    Se invece vuoi avere i due inserimenti staccati l'uno dall'altro, penso sia molto meglio creare due finestre distinte...
  • Re: Creare un dialog con più widgets

    Ah ok.
    credo di aver risolto, se ho dei problemi riscriverò su questo argomento
Devi accedere o registrarti per scrivere nel forum
7 risposte