Una finestra di dialogo per ogni sistema operativo

di il
8 risposte

Una finestra di dialogo per ogni sistema operativo

Ciao a tutti!

Cerco un valido sistema per poter ottenere una finestra di dialogo in tema con il sistema operativo in cui viene eseguita.
Mi spiego meglio..
Ho notato che usando la classe 'JFileChooser' Le finestre di dialogo generate non rispettano lo stile del sistema operativo e neppure i file hanno le icone assegnate dal sistema ad ogni estensione riconosciuta, ma bensi riflettono piuttosto a mio parere le vecchie finestre di dialogo anonime dell'atari (non so se le avesse..)

Ora,da neofita, chiedo se possa esistere un modo per ottenere una finestra simile a quelle generate dal sistema o meglio ancora un sistema per richiamare proprio le finestre di dialogo proprietarie, per intenderci più o meno come fa un browser.

8 Risposte

  • Re: Una finestra di dialogo per ogni sistema operativo

    Slomito ha scritto:


    Cerco un valido sistema per poter ottenere una finestra di dialogo in tema con il sistema operativo in cui viene eseguita.
    Mi spiego meglio..
    Ho notato che usando la classe 'JFileChooser' Le finestre di dialogo generate non rispettano lo stile del sistema operativo e neppure i file hanno le icone assegnate dal sistema ad ogni estensione riconosciuta, ma bensi riflettono piuttosto a mio parere le vecchie finestre di dialogo anonime dell'atari (non so se le avesse..)

    Ora,da neofita, chiedo se possa esistere un modo per ottenere una finestra simile a quelle generate dal sistema o meglio ancora un sistema per richiamare proprio le finestre di dialogo proprietarie, per intenderci più o meno come fa un browser.
    java.awt.FileDialog è la classe di AWT per la dialog "nativa" specifica del sistema per il browsing dei file. Non è granché configurabile (molto meno di JFileChooser) proprio perché nell'ottica di considerare tutte le varie piattaforme, i componenti AWT trattano solo le feature comuni a tutte le piattaforme.
  • Re: Una finestra di dialogo per ogni sistema operativo

    Immaginavo che non fosse possibile con AWT o JFileChooser visto la 'natura' di java. Pensavo comunque si fosse trovato un sistema piu o meno lecito di ovviare a questa mancanza.

    Spulciando qua e la ho trovato comunque un "tips and tricks" passatemi l'espressione, che permette di cambiare il Look & Feel delle finestre di dialogo, anche se non risolve il problema che ho proposto, lo inserisco qui visto che potrebbe servire a qualcuno che trova questo post.
    public void visualizza(){
    try {
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
     // stile CDE/Motif. Scelta disponibile su qualunque piattaforma
     } 
    catch (Exception e) { }
    String var = JOptionPane.showInputDialog (....);
    }
    Mentre scrivevo ho avuto un'idea e di conseguenza formulo la domanda

    Il mio problema reale è far identificare a colpo d'occhio un file in una cartella che ne contiene migliaia. Anche se è possibile escludere tutti gli altri, la soluzione non mi piace perchè dovrei anche controllare se esistono altri file vicino a questo.
    Sarebbe possibile inserire un'icona che identifichi almeno il file che cerco? es. se cerco un file .txt solo i file con tale estensione hanno un'icona differente?
  • Re: Una finestra di dialogo per ogni sistema operativo

    Slomito ha scritto:


    Immaginavo che non fosse possibile con AWT o JFileChooser visto la 'natura' di java. Pensavo comunque si fosse trovato un sistema piu o meno lecito di ovviare a questa mancanza.
    [...]
    Il mio problema reale è far identificare a colpo d'occhio un file in una cartella che ne contiene migliaia. Anche se è possibile escludere tutti gli altri, la soluzione non mi piace perchè dovrei anche controllare se esistono altri file vicino a questo.
    Sarebbe possibile inserire un'icona che identifichi almeno il file che cerco? es. se cerco un file .txt solo i file con tale estensione hanno un'icona differente?
    Onestamente non ho capito il dubbio/problema. FileDialog, perlomeno su Windows, mostra le icone dei file. Prova a spiegare meglio ... magari (probabilmente) ho compreso male io ...

    Slomito ha scritto:


    public void visualizza(){
    try {
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
     // stile CDE/Motif. Scelta disponibile su qualunque piattaforma
     } 
    catch (Exception e) { }
    String var = JOptionPane.showInputDialog (....);
    }
    La impostazione del Look&Feel vale solo per i componenti Swing interni alle finestre (JButton, JTextField ecc..). Non vale per tutti i componenti AWT (che sono sempre e solo quelli "nativi") e nemmeno di per sé per i componenti "top-level" cioè Frame/JFrame/Dialog/JDialog, perché nelle finestre principali le decorazioni sono di base quelle "native".
  • Re: Una finestra di dialogo per ogni sistema operativo

    Ho sempre usato solo JFileChooser che ha un'interfaccia a mio parere bruttissima, sto vedendo ora FileDialog e sembra che sia quello che cercavo. Grazie.
  • Re: Una finestra di dialogo per ogni sistema operativo

    Slomito ha scritto:


    Ho sempre usato solo JFileChooser che ha un'interfaccia a mio parere bruttissima
    Chiaramente dipende dai gusti .... io personalmente non lo trovo così brutto, perlomeno quello con il L&F "Metal" (è il L&F predefinito). Se provi JFileChooser con il L&F "Motif" ... beh, quello sì, lo trovo proprio brutto!

    Tra l'altro JFileChooser ha una feature che FileDialog non ha: puoi customizzare le icone dei file come vuoi.

    Slomito ha scritto:


    sto vedendo ora FileDialog e sembra che sia quello che cercavo. Grazie.
    FileDialog mostra le icone, che sono quelle derivate dalle associazioni configurate nel sistema. Su Windows, se ai .txt è associato Notepad, avrai una certa icona. Se è associato Notepad++, la icona sarà diversa. Questo non lo puoi controllare da Java.
  • Re: Una finestra di dialogo per ogni sistema operativo

    andbin ha scritto:


    Tra l'altro JFileChooser ha una feature che FileDialog non ha: puoi customizzare le icone dei file come vuoi.
    Ehm.. Era quello che cercavo all'inizio, ma non avendo idea di come fare ho optato per "una finestra di dialogo per ogni sistema operativo".
    Cioè quello che fa esattamente FileDialog!

    andbin ha scritto:


    FileDialog mostra le icone, che sono quelle derivate dalle associazioni configurate nel sistema. Su Windows, se ai .txt è associato Notepad, avrai una certa icona. Se è associato Notepad++, la icona sarà diversa.
    Il mio obbiettivo è proprio di far riconoscere visivamente al cliente, una certa estensione di file, magari anche che già riconosce, se poi questa sia una scelta corretta e/o migliore questo è opinabile.

    Metto i puntini sulle i :
    Per come la vedo io, almeno nel contesto della mia applicazione, dovrebbe "sembrare" professionale, quindi gradirei veramente usare JFileChooser, oltre che per la facilità di implementazione nel codice, anche per l'affidabilità che offre.

    Esteticamente però ha una lacuna per me enorme, cioè di essere veramente monotono visualizzando tutti i file e le cartelle con due sole icone, oltretutto di colore simile.

    Mi piacerebbe poter 'inserire' tre icone differenti per cartelle, file e file con filtro di estensione. Sarebbe possibile?
  • Re: Una finestra di dialogo per ogni sistema operativo

    Slomito ha scritto:


    Ehm.. Era quello che cercavo all'inizio

    Esteticamente però ha una lacuna per me enorme, cioè di essere veramente monotono visualizzando tutti i file e le cartelle con due sole icone, oltretutto di colore simile.

    Mi piacerebbe poter 'inserire' tre icone differenti per cartelle, file e file con filtro di estensione. Sarebbe possibile?
    Come ho detto prima: JFileChooser consente di personalizzare le icone. C'è la spiegazione nel tutorial oracle: How to Use File Choosers - Customizing the File View
  • Re: Una finestra di dialogo per ogni sistema operativo

    Wow grazie mille...
Devi accedere o registrarti per scrivere nel forum
8 risposte