Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Infatti, ma come faccio a prendere direttamente la directory dell'elemento selezionato ?
Cioè, è possibile che ci sia un metodo di File che mi costruisca il path considerandomi solo l'ultima directory ?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
per evitare equivoci
http://docs.oracle.com/javase/7/docs...a/io/File.html
ti consiglio di fare amicizia con la javadoc
RTFM Read That F*** Manual!!!
Allora, ho fatto così:
ho definito una nuova classe
poi nei due jButton (Africa e Europa), ho fatto così:codice:public class Continente { private String continente; public String getContinente() { return continente; } public void setContinente(String continente) { this.continente = continente; } @Override public String toString() { return "Continente{" + "continente=" + continente + '}'; } }
ecodice:private void AfricaActionPerformed(java.awt.event.ActionEvent evt) { File dir = new File("dirIniziale\\Africa"); String[] files = dir.list(); DefaultComboBoxModel modello = new DefaultComboBoxModel(); for (String file : files) { modello.addElement(file); } Menu_Tendina.setModel(modello); contin.setContinente("Africa"); }
poi nel jButton "Cerca", cosìcodice:private void EuropaActionPerformed(java.awt.event.ActionEvent evt) { File dir = new File("dirIniziale\\Europa"); String[] files = dir.list(); DefaultComboBoxModel modello = new DefaultComboBoxModel(); for (String file : files) { modello.addElement(file); } Menu_Tendina.setModel(modello); contin.setContinente("Europa"); }
e funziona..ma cosa ne pensate??codice:private void CercaActionPerformed(java.awt.event.ActionEvent evt) { elemento.setCitta(String.valueOf(Menu_Tendina.getSelectedItem())); File dir = new File("dirIniziale\\" + contin.getContinente() + "\\" + elemento.getCitta()); String[] files = dir.list(); DefaultComboBoxModel modello = new DefaultComboBoxModel(); for (String file : files) { modello.addElement(file); } Database_Radiazione.setModel(modello); datab.setData(String.valueOf(Database_Radiazione.getSelectedItem())); jTextArea1.setText(elemento.getCitta()); jTextArea2.setText(String.valueOf(Menu_Tendina.getSelectedItem())); }
se funziona bon, personalmente ti dico
1. non hai letto bene il link su File della javadoc, né quello che ti ho scritto io
2. non ha senso usare il combo model come fai tu, un po' di tempo fa ti avevo anche indicato come usarlo proficuamente senza passare per il valueOf di un oggetto (che altri non è che il toString)
3. dovresti imparare ad usare le convenzioni java per la nomenclatura
RTFM Read That F*** Manual!!!
Che funzioni ... ok. Io prima ti dicevo di prendere il path dall'elemento selezionato .... ma mi stavo dimenticando (non ero attento) che stai usando list() ed esso ti fornisce dei String con solo il nome del file ... senza path!
Potresti fare in modo da inserire nel model dei tuoi oggetti es. FileItem che incapsulano il java.io.File e in cui il toString() fornisce il solo nome del file per visualizzarlo. Avresti il (grande) vantaggio di poter ottenere sempre un java.io.File per ciascun elemento.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
1. Guarda ho letto la documentazione su File relativamente a quello che poteva servirmi (getParent() , getParentFile() , getPath(), getAbsolutePath() e getAbsoluteFile() ), li ho anche provati ma non sono riuscito ad ottenere quello che volevo.
2. Potresti ridirmi l'utilizzo del combo model , dove sbaglio ?
3. Per nomenclatura, ti riferisci alle classi che iniziano con lettera maiuscola e varibaili con lettere minuscola ecc.. ?
Perché dal list() hai solo il nome, senza path.
Io lo farei così:
Banale classe che fa da "wrapper" per java.io.File:
codice:public class FileItem { private final File file; public FileItem(File file) { this.file = file; } public File getFile() { return file; } public String toString() { return file.getName(); } }
L'ho fatta "immutabile" (anche per abbreviare) ma puoi renderla "mutabile" se vuoi (non è quello il punto comunque ...).
Poi:
codice:File dir = ......... for (File f : dir.listFiles()) { tuoModello.addElement(new FileItem(f)); }
Tutto qui.
Poi dove prendi l'elemento selezionato, se non è null, allora hai un FileItem e da questo prendi il File (che ha il path).
Sì, dovresti apprendere quali sono le convenzioni standard riconosciute nella comunità degli sviluppatori Java.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet