Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    GUI in Java: elaborazione nella finestra principale

    Salve a tutti,
    mi scuso se per molti la domanda è banale ma non so bene cosa cercare. Qualsiasi link sarà ben gradito!

    Sto lavorando una semplice applicazione che ha un'interfaccia grafica in java. Per quanto riguarda la struttura non ci sono problemi, con le interazioni invece sì.
    L'applicazione ha 3 funzioni che vengono presentate sotto forma di icone (o bottoni) all'avvio.
    A seconda che l'utente clicchi su una delle tre icone devo eseguire le specifiche istruzioni.
    Fin qui tutto bene.

    Vorrei che l'avanzamento dell'elaborazione, gli eventuali errori e i messaggi di conferma venissero inseriti nella "finestra" dove ho inserito le icone (sostituendole). Tutti i tutorial on line che ho trovato riguardanti gli ActionListener creano l'elaborazione in una finestra di dialogo e non va bene.
    Qualcuno può aiutarmi?

    In pratica ho bisogno di simulare l'interazione di una pagina web tra form/pagina action dove responso ed errori sono inseriti nella struttura della pagina e non in una finestra separata!


    Grazie a chi mi risponderà
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Nunkij Visualizza il messaggio
    gli eventuali errori e i messaggi di conferma venissero inseriti nella "finestra" dove ho inserito le icone (sostituendole).
    Cosa intendi di preciso? Cosa vuol dire "sostituendole"? Dovresti chiarire questo aspetto: precisa meglio come è fatta la interfaccia all'inizio e come deve poi cambiare successivamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Cerco di essere pi� chiaro.
    Tutti gli esempi che ho trovato on line gestiscono un eventuale input dell'utente tramite un dialog. Il classico campo di testo con il bottone "invia" che quando viene premuto apre la finestra del dialog e dice "OK HAI SCRITTO XXXXX".
    Questo si assimila a una pagina HTML con un form il cui risultato viene elaborato in un popup (ok, non � proprio cos� ma sto cercando di farmi capire!).

    Io vorrei replicare il sistema della programmazione web in cui l'elaborazione del form viene fatta in una pagina con lo stesso layout (e quindi suppongo che si verifichi nella finestra principale dell'applicazione java).
    Magari il paragone � sbagliato, nel caso mi basterebbe capire il punto di partenza da cui sbaglio!

    Esempio banale:

    La mia applicazione Java consente di caricare un'immagine e rimpicciolirla.
    All'apertura ho un JPanel con un campo che mi consente di caricare l'immagine dal FileSystem.
    Cliccando sul bottone "upload" parte l'elaborazione con varie classi che prendono il file, controllano che sia del tipo giusto, rimpiccioliscano e diano un messaggio di conferma OPPURE se qualcosa va storto diano un errore.
    Questo errore va visualizzato nello stesso JPanel possibilmente sostituendo il campo presente in precedenza.

    (NB: non sto chiedendo se questa � la tecnica migliore, voglio solo capire se � fattibile con Java Swing e, nel caso, come farlo!)

    Spero di essere stato pi� chiaro
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Nunkij Visualizza il messaggio
    Io vorrei replicare il sistema della programmazione web in cui l'elaborazione del form viene fatta in una pagina con lo stesso layout (e quindi suppongo che si verifichi nella finestra principale dell'applicazione java).
    Magari il paragone � sbagliato, nel caso mi basterebbe capire il punto di partenza da cui sbaglio!

    Esempio banale:

    La mia applicazione Java consente di caricare un'immagine e rimpicciolirla.
    All'apertura ho un JPanel con un campo che mi consente di caricare l'immagine dal FileSystem.
    Cliccando sul bottone "upload" parte l'elaborazione con varie classi che prendono il file, controllano che sia del tipo giusto, rimpiccioliscano e diano un messaggio di conferma OPPURE se qualcosa va storto diano un errore.
    Questo errore va visualizzato nello stesso JPanel possibilmente sostituendo il campo presente in precedenza.

    (NB: non sto chiedendo se questa � la tecnica migliore, voglio solo capire se � fattibile con Java Swing e, nel caso, come farlo!)
    Allora chiariamo bene: all'interno di un frame/dialog Swing, a seguito di "eventi" (quindi dopo che la interfaccia è stata costruita e visualizzata inizialmente) puoi fare un po' tutte le modifiche che ti pare ai componenti: spostarli, ridimensionarli, rimuoverli o aggiungerne di nuovi. Si PUO' fare tutto, tecnicamente.
    È solo questione di avere BEN chiaro come funziona il layout dei componenti in AWT/Swing, con/senza un layout manager e se si usa uno o più dei layout manager predefiniti, bisogna chiaramente conoscerne caratteristiche, vincoli, ecc.. Insomma, serve lo STUDIO di tutte queste cose. Una volta che hai queste nozioni, tecnicamente potresti fare quello che ti pare.

    Prendiamo l'esempio (banale a dire il vero) di un semplice messaggio di errore per fare una segnalazione all'utente. Teoricamente/tecnicamente sarebbe assolutamente possibile far "comparire" al centro della finestra (la STESSA finestra, attenzione, non una nuova finestra/dialog) un pannellino (magari con sfondo .. bordi ecc... particolari) con il messaggio e un pulsante di chiudi/ok. Ci sono però questioni molto "spinose" su un approccio di questo tipo. Se il pannellino di errore è nella stessa finestra, è "imparentato" in un certo senso con gli altri componenti, che continuerebbero ad essere di per sé usabili. Vuoi bloccare l'accesso a questi componenti finché non viene premuto il pulsante chiudi/ok sul pannellino di errore? Se sì, è tecnicamente possibile ma NON è banale. Se no, cosa vuoi che succeda se l'utente interagisce con un altro componente? Che si rimuova in automatico il pannellino di errore?

    Insomma, lo scenario è FATTIBILE ma non è banale e impone un po' di valutazioni. E oltretutto rendere "replicabile" e facilmente riutilizzabile questo approccio su più frame diversi richiede un bel impegno dal punto di vista del design a livello object-oriented.

    Per questi (e altri motivi che sicuramente ora mi sfuggono), questo NON è l'approccio tipico nelle interfacce desktop. In Swing, se c'è un errore "bloccante" e vuoi mostrarlo all'utente, la cosa più semplice e tipica è usare JOptionPane che offre tutta una serie di dialog "standard" per informazioni, errori, ecc...

    How to Make Dialogs

    Morale di tutto questo: se vuoi realizzare cose particolari (come l'esempio del pannellino di errore) per tuo sfizio o perché ci sono necessità/requisiti ben precisi ... va beh (chiudiamo un occhio) ... ok ... si può anche fare, come detto.
    Ma in generale NON cercare di forzare un paradigma di interazione verso l'utente prendendo spunto da tutto un altro contesto (es. web application) dove l'interazione dell'utente con la web app è radicamente differente per le tecnologie utilizzate.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie avevo bisogno proprio di una spiegazione come questa! In realtà ho fatto un'analisi più approfondita di cosa deve fare l'applicazione (in pratica è poco più di un esercizio, quindi le specifiche sono abbastanza flessibili) e sono riuscito a sistemare il tutto secondo questo schema:

    Campo di testo in cui l'utente mette qualcosa
    JLabel in cui riceve il risultato dell'elaborazione o eventuali errori se si verificano.

    Volevo provare a fare una cosa simile perché in nessun esempio che ho trovato on line c'era la possibilità di ricevere un responso in modo diverso da un dialog (quindi questo si impara subito, il resto no!).

    Far sparire il "form" come può accadere su una applicazione web DI FATTO è quasi inutile in un programma desktop e in effetto ripensandoci non sono molti i casi in cui l'errore viene dato in una finestra senza il "form". Molto più spesso compaiono messaggi di errore direttamente sotto i campi!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.