Avatar billede ttn- Nybegynder
06. april 2004 - 11:59 Der er 6 kommentarer og
1 løsning

FileChooser efter en FileChooser

Hejsa

Er det muligt at have en filechooser efter en anden, så hvis man vælger en fil i den første, så hopper den direkte over til den anden?
Avatar billede ttn- Nybegynder
06. april 2004 - 12:07 #1
så hopper den direkte over til den anden filechooser*
Avatar billede _carsten Nybegynder
06. april 2004 - 12:43 #2
Du kan godt åbne en filchooser fra en anden, men hvad skulle lige være ideen i det ?
Avatar billede Slettet bruger
06. april 2004 - 12:55 #3
ja, en FileChooser er pr. default Modal, så det kan du sagtens gøre, programkoden som er skrevet efter (under) din fileChooser.showXXXdialog() vil først blive eksekveret efter du har lukket den.
Avatar billede ttn- Nybegynder
06. april 2004 - 13:24 #4
Idéen er, at man vælger en fil, man gerne vil have kopieret, og når man så har valgt den, så kan så bestemme, hvor den skal kopieres hen.
En der kan komme med et eksempel?
Avatar billede _carsten Nybegynder
06. april 2004 - 15:20 #5
Så blev der også tid til at lave et eksempel.

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

public class JFrame_1 extends javax.swing.JFrame {
    public JFrame_1() {
        initComponents();
    }

    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("Kopier fil");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                d(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void d(java.awt.event.ActionEvent evt) {
        chooser = new OpenFile();
        chooser.setDialogTitle("Vælg fil til kopiering");
        chooser.setApproveButtonText("Kopier fil");
        chooser.showOpenDialog(this);
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new JFrame_1().show();
    }

    private javax.swing.JButton jButton1;
    private OpenFile chooser;
}



class OpenFile extends JFileChooser{
   
    public OpenFile() {
    }
   
    public void approveSelection(){
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Kopier " + getSelectedFile() + " til");
        chooser.setDialogType(JFileChooser.SAVE_DIALOG);
        int returnValue = chooser.showSaveDialog(this);
       
        if(returnValue == JFileChooser.APPROVE_OPTION){
            BufferedOutputStream dest = null;
            int BUFFER = 2048;

            try {
                FileInputStream fis = new FileInputStream(getSelectedFile());
                int count;
                byte data[] = new byte[BUFFER];

                FileOutputStream fos = new FileOutputStream(chooser.getSelectedFile());
                dest = new BufferedOutputStream(fos, BUFFER);
                while ((count = fis.read(data, 0, BUFFER)) != -1) {
                    dest.write(data, 0, count);
                }

                dest.flush();
                dest.close();
                fis.close();
                super.approveSelection();
            } catch (Exception e) {
                e.printStackTrace();
            }
           
        }
       
    }
}
Avatar billede ttn- Nybegynder
06. april 2004 - 19:48 #6
Hov, jeg kom til at trykke forkert.

Smid et svar igen Carsten, og tak for hjælpen
Avatar billede _carsten Nybegynder
06. april 2004 - 20:03 #7
Kommer her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester