Spulciando dai libri di java ho trovato una routine la quale mi permette di aprire una finestra di dialogo la quale mi dovrebbe far aprire un file. Uso il condizionale inquanto vi sono degli errori; per essere più preciso riporto i frammenti del codice interessati con i relativi messaggi di errore:
Packeg usati:
ExtensionFileFilter.java classe che gestisce il filtro di selezione del file da aprire:codice:import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.beans.*; import java.util.*; import java.io.*; import javax.swing.*; import javax.swing.event.*; import java.swing.filechooser.FileFilter; import java.swing.filechooser.FileView; ...
TextEditFrame.java è la classe che implementa l'editor di testo.codice:/** @effects rappresenta un filtro di file corrispondente a tutti i file con un dato set di estensioni */ class ExtensionFileFilter extends FileFilter{ private String description = ""; private ArrayList extensions = new ArrayList(); /** @effects Aggiunge un'estensione riconosciuta da questo diltro di file. @param extension rappresenta un'estensione di file (come ".txt" o "txt" */ public void addExtension(String extension){ if(!extension.startsWith(".")) extension = "." + extension; extensions.add(extension.toLowerCase()); }//addExtension /** @effects Imposta una Descrizione per il set di file riconosciuti da questo filtro di file. @param aDescription rappresenta una descrizione del set di file */ public void setDescription(String aDescription){ description = aDescription; }//setDescription /** @effects restituisce una descrizione per il set di file riconosciuti da questo filtro di file. @return una descrizione del set di file. */ public String getDescription(){ return description; }//getDescription public boolean accept(File f){ if(f.isDirectory()) return true; String name = f.getName().toLowerCase(); //controlla se il nome di file termina con una delle estensioni for(int i = 0; i < extensions.size(); i++) if(name.endsWith((String)extensions.get(i))) return true; return false; }//accept }
Si tenga presente che il comando Open viene implementato sia da voce di menu File:
Messaggi di errore: al momento della compilazione della classe di filtro per il file selezionato, ovvero il file ExtensionFileFilter.java ricevo il seguente messaggio di errore:codice://BARRA DEI MENU ... JMenuItem openItem = new JMenuItem("Open"); openItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_O, InputEvent.CTRL_MASK)); fileMenu.add(openItem); openItem.addActionListener(new FileOpenListener()); ... JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); menuBar.add(fileMenu); ... che da barra degli strumenti //BARA DEGLI STRUMENTI ... JButton openButton = new JButton(new ImageIcon("open.gif")); openButton.addActionListener(new FileOpenListener()); ... //popola la barra degli strumenti JToolBar bar = new JToolBar("Standard bar"); ... bar.add(openButton); ... mentre di seguito è riportata l'azione associata ai due eventi: /* @effects apre una finestra di dialogo di scelta dei file **/ private class FileOpenListener implements ActionListener{ public void actionPerformed(ActionEvent evt){ //imposta la finestra di scelta dei file chooser.setCurrentDirectory(new File(".")); //accetta tutti i file di testo con estenzione .txt .java .c .cpp final ExtensionFileFilter filter = new ExtensionFileFilter(); filter.addExtension("txt"); filter.addExtension("java"); filter.addExtension("c"); filter.addExtension("cpp"); filter.setDescription("Text files"); chooser.setFileFilter(filter); //mostra una finestra di dialogo di scelta del file int result = chooser.showOpenDialog(TextEditFrame.this); //per salvare usare showSaveDialog //se il file di testo selezionato è accettato, lo visualizza nella casella di testo if(result == JFileChooser.APPROVE_OPTION) textArea.setText(chooser.getSelectedFile().getPath()); }//actionPerformed }//FileOpenListener
Da come si evince dal messaggio il JDK mi dice che i package FileFilter e FileView non esistono !! Come posso risolvere tale problema?codice:C:\j2sdk1.4.1_01\bin>javac ExtensionFileFilter.java ExtensionFileFilter.java:9: package java.swing.filechooser does not exist import java.swing.filechooser.FileFilter; ^ ExtensionFileFilter.java:10: package java.swing.filechooser does not exist import java.swing.filechooser.FileView; ^ ExtensionFileFilter.java:16: no interface expected here class ExtensionFileFilter extends FileFilter{ ^ 3 errors

Rispondi quotando



