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

    JFileChooser con Netbeans 7.0

    Ciao ragazzi, sono nuovo del forum;
    in questi giorni sto lavorando ad un progetto per un esame: l'applicazione realizza la steganografia di un'immagine e poi, dopo averla allegata ad una mail, la via tramite API Javamail.
    Per selezionare il file (.jpeg) da allegare alla mail ho selezionato dalla "Tavolozza" un JFileChooser e ad esso ho associato un "evento":

    codice:
    private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {
                            
       jFileChooser1.setCurrentDirectory(new File(".."));
       jFileChooser1.setFileSelectionMode(JFileChooser.FILES_ONLY);
       File selectedPfile = jFileChooser1.getSelectedFile();
    
       jTextArea1.setText(selectedPfile.getAbsolutePath());  
       path_file = jTextArea1.getText();
       System.out.println(path_file);
    
    }

    Ora si presenta il seguente problema: nel momento in cui lancio l'applicazione, mi posiziono nella cartella in cui è situato il file che mi interessa e lo seleziono (inviando il path all'applicazione che allega il file). Se però seleziono per la seconda volta il file, allora il path varia e mi ritrovo nella "working directory".
    Come posso fare in modo che, premendo consecutivamente il tasto di selezione, non mi cambi la cartella visualizzata?

    Per intenderci: seleziono la prima volta il file e il path è corretto..... C:\Documents and Settings\Michele\Desktop\result.jpg

    Se clicco nuovamente sul tasto di "selezione", il path varia in: C:\Documents and Settings\Michele\Documenti\NetBeansProjects\result .jpg mentre invece io vorrei che il path fosse sempre lo stesso!!!!

    Grazie mille e buona giornata

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Mi limito a farti notare che la classe JFileChooser possiede il metodo setCurrentDirectory() che va utilizzato se si vuole garantire che all'apertura della finestra di dialogo, essa sia posizionata nella directory che ci interessa. E non va usato in quel modo, ma gli va passato un riferimento completo ad una directory, altrimenti si incorre nell'errore: ".." è la directory superiore rispetto alla directory corrente... che non puoi sapere in un determinato momento quale sia.

    Aggiungo anche che usare gli strumenti RAD dell'ambiente per progettare le interfacce grafiche è uno dei migliori modi per complicarsi la vita e ritrovarsi in un vortice di codice superfluo, poco performante e difficile da manutenere (basta guardare il nome del metodo che hai postato per farsi rizzare i capelli).

    Consiglio, quindi, di scrivere il codice dei componenti grafici a mano... poi ognuno sceglie la strada che vuole.

    PS: quando posti del codice, usa i tag CODE, come richiesto dal Regolamento interno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ciao, ti ringrazio innanzitutto per la celerità della tua risposta; la scelta di non scrivere a mano la GUI è dettata dal fatto che sto "riciclando" un progetto che prevede di suo un JFrame scritto non a mano e quindi mi sono adattato utilizzando la "tavolozza" di Netbeans.
    Il problema non è settare la directory che deve apparire all'apertura :-(
    Bensì, quando seleziono un file mi restituisce il path corretto....se poi (senza chiudere la finestra) ripremo il tasto per riselezionare lo stesso file (il classico bottone "Apri"), il path cambia nel modo che ti ho illustrato.
    Magari tu mi dirai "perchè se hai selezionato il file, lo devi riselezionare?"...però voglio capire perchè non funge...è una mia curiosità........

    Grazie

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.