Visualizzazione dei risultati da 1 a 6 su 6

Discussione: (java) JFileChooser

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) JFileChooser

    Ho un'applicazione swing con un pulsante che prmette di aprire un file
    Quando premi il pulsante si apre la finestra che ti permette di selezionare il file da aprire
    Volevo fare in modo che quando questa finestra è aperta se selezioni un file e premi sul tasto canc della tastiera, venisse cancellato il file
    Ho scritto il seguente codice


    final JFileChooser fc = new JFileChooser();
    fc.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    System.out.println("cancello un file"+e.getKeyCode()+" "+ KeyEvent.VK_CANCEL);
    if (e.getKeyCode() == KeyEvent.VK_CANCEL)
    fc.getSelectedFile().delete();
    }
    });

    La finestra di apertura file comprae e funziona correttaemnte, ma mi viene totalmente ignorato la pressione del tasto canc della tastiera
    Vedete l'errore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    up

  3. #3
    codice:
     if (e.getKeyCode() == 127)
    prova così.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Non funziona, posto tutto il codice

    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.filechooser.*;

    /*
    * FileChooserDemo.java is a 1.4 application that uses these files:
    * images/Open16.gif
    * images/Save16.gif
    */
    public class FileChooserDemo extends JPanel
    implements ActionListener {
    static private final String newline = "\n";
    JButton openButton, saveButton;
    JTextArea log;
    JFileChooser fc;

    public FileChooserDemo() {
    super(new BorderLayout());

    //Create the log first, because the action listeners
    //need to refer to it.
    log = new JTextArea(5,20);
    log.setMargin(new Insets(5,5,5,5));
    log.setEditable(false);
    JScrollPane logScrollPane = new JScrollPane(log);

    //Create a file chooser
    fc = new JFileChooser();
    fc.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    System.out.println("ci sono"+e.getKeyCode()+" "+ KeyEvent.VK_CANCEL);
    if (e.getKeyCode() == KeyEvent.VK_CANCEL)
    //fc.getSelectedFile().delete();
    System.out.println("k");
    }
    });


    //Uncomment one of the following lines to try a different
    //file selection mode. The first allows just directories
    //to be selected (and, at least in the Java look and feel,
    //shown). The second allows both files and directories
    //to be selected. If you leave these lines commented out,
    //then the default mode (FILES_ONLY) will be used.
    //
    //fc.setFileSelectionMode(JFileChooser.DIRECTORIES_O NLY);
    //fc.setFileSelectionMode(JFileChooser.FILES_AND_DIR ECTORIES);

    //Create the open button. We use the image from the JLF
    //Graphics Repository (but we extracted it from the jar).
    openButton = new JButton("Open a File...",
    createImageIcon("images/Open16.gif"));
    openButton.addActionListener(this);

    //Create the save button. We use the image from the JLF
    //Graphics Repository (but we extracted it from the jar).
    saveButton = new JButton("Save a File...",
    createImageIcon("images/Save16.gif"));
    saveButton.addActionListener(this);

    //For layout purposes, put the buttons in a separate panel
    JPanel buttonPanel = new JPanel(); //use FlowLayout
    buttonPanel.add(openButton);
    buttonPanel.add(saveButton);

    //Add the buttons and the log to this panel.
    add(buttonPanel, BorderLayout.NORTH);
    add(logScrollPane, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent e) {

    //Handle open button action.
    if (e.getSource() == openButton) {
    int returnVal = fc.showOpenDialog(FileChooserDemo.this);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
    File file = fc.getSelectedFile();
    //This is where a real application would open the file.
    log.append("Opening: " + file.getName() + "." + newline);
    } else {
    log.append("Open command cancelled by user." + newline);
    }
    log.setCaretPosition(log.getDocument().getLength() );

    //Handle save button action.
    } else if (e.getSource() == saveButton) {
    int returnVal = fc.showSaveDialog(FileChooserDemo.this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
    File file = fc.getSelectedFile();
    //This is where a real application would save the file.
    log.append("Saving: " + file.getName() + "." + newline);
    } else {
    log.append("Save command cancelled by user." + newline);
    }
    log.setCaretPosition(log.getDocument().getLength() );
    }
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
    java.net.URL imgURL = FileChooserDemo.class.getResource(path);
    if (imgURL != null) {
    return new ImageIcon(imgURL);
    } else {
    System.err.println("Couldn't find file: " + path);
    return null;
    }
    }

    /**
    * Create the GUI and show it. For thread safety,
    * this method should be invoked from the
    * event-dispatching thread.
    */
    private static void createAndShowGUI() {
    //Make sure we have nice window decorations.
    //JFrame.setDefaultLookAndFeelDecorated(true);

    //Create and set up the window.
    JFrame frame = new JFrame("FileChooserDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

    //Create and set up the content pane.
    JComponent newContentPane = new FileChooserDemo();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
    }

    public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }
    });
    }
    }

    NON passa neanche dalla riga di codice che stampa CI SONO

  5. #5
    Non vorrei dire una stronzata , ma guardando il codice dei sorgenti della jdk , credo che il keyListener non faccia effetto sul JFileChooser che tu vedi, in quanto quando richiami il metodo showOpenDialog ti viene ritornato un nuovo JDialog .
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    e quindi come faccio a intercettare la pressione dei tasti della tastiera quando il jfilechooser è aperto?

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