国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java文件選擇對(duì)話(huà)框JFileChooser使用詳解

2019-11-26 15:06:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

文件加密器,操作過(guò)程肯定涉及到文件選擇器的使用,所以這里以文件加密器為例。下例為我自己寫(xiě)的一個(gè)文件加密器,沒(méi)什么特別的加密算法,只為演示文件選擇器JFileChooser的使用。

加密器界面如圖:

項(xiàng)目目錄結(jié)構(gòu)如圖:

下面貼出各個(gè)文件的源代碼:

MainForm.java

package com.lidi;import javax.swing.*;import java.awt.*;public class MainForm extends JFrame {  /**   * 構(gòu)造界面   *    * @author 1109030125   */  private static final long serialVersionUID = 1L;  /* 主窗體里面的若干元素 */  private JFrame mainForm = new JFrame("TXT文件加密"); // 主窗體,標(biāo)題為“TXT文件加密”  private JLabel label1 = new JLabel("請(qǐng)選擇待加密或解密的文件:");  private JLabel label2 = new JLabel("請(qǐng)選擇加密或解密后的文件存放位置:");  public static JTextField sourcefile = new JTextField(); // 選擇待加密或解密文件路徑的文本域  public static JTextField targetfile = new JTextField(); // 選擇加密或解密后文件路徑的文本域  public static JButton buttonBrowseSource = new JButton("瀏覽"); // 瀏覽按鈕  public static JButton buttonBrowseTarget = new JButton("瀏覽"); // 瀏覽按鈕  public static JButton buttonEncrypt = new JButton("加密"); // 加密按鈕  public static JButton buttonDecrypt = new JButton("解密"); // 解密按鈕  public MainForm() {    Container container = mainForm.getContentPane();    /* 設(shè)置主窗體屬性 */    mainForm.setSize(400, 270);// 設(shè)置主窗體大小    mainForm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 設(shè)置主窗體關(guān)閉按鈕樣式    mainForm.setLocationRelativeTo(null);// 設(shè)置居于屏幕中央    mainForm.setResizable(false);// 設(shè)置窗口不可縮放    mainForm.setLayout(null);    mainForm.setVisible(true);// 顯示窗口    /* 設(shè)置各元素位置布局 */    label1.setBounds(30, 10, 300, 30);    sourcefile.setBounds(50, 50, 200, 30);    buttonBrowseSource.setBounds(270, 50, 60, 30);    label2.setBounds(30, 90, 300, 30);    targetfile.setBounds(50, 130, 200, 30);    buttonBrowseTarget.setBounds(270, 130, 60, 30);    buttonEncrypt.setBounds(100, 180, 60, 30);    buttonDecrypt.setBounds(200, 180, 60, 30);    /* 為各元素綁定事件監(jiān)聽(tīng)器 */    buttonBrowseSource.addActionListener(new BrowseAction()); // 為源文件瀏覽按鈕綁定監(jiān)聽(tīng)器,點(diǎn)擊該按鈕調(diào)用文件選擇窗口    buttonBrowseTarget.addActionListener(new BrowseAction()); // 為目標(biāo)位置瀏覽按鈕綁定監(jiān)聽(tīng)器,點(diǎn)擊該按鈕調(diào)用文件選擇窗口    buttonEncrypt.addActionListener(new EncryptAction()); // 為加密按鈕綁定監(jiān)聽(tīng)器,單擊加密按鈕會(huì)對(duì)源文件進(jìn)行加密并輸出到目標(biāo)位置    buttonDecrypt.addActionListener(new DecryptAction()); // 為解密按鈕綁定監(jiān)聽(tīng)器,單擊解密按鈕會(huì)對(duì)源文件進(jìn)行解密并輸出到目標(biāo)位置    sourcefile.getDocument().addDocumentListener(new TextFieldAction());// 為源文件文本域綁定事件,如果文件是.txt類(lèi)型,則禁用解密按鈕;如果是.kcd文件,則禁用加密按鈕。    sourcefile.setEditable(false);// 設(shè)置源文件文本域不可手動(dòng)修改    targetfile.setEditable(false);// 設(shè)置目標(biāo)位置文本域不可手動(dòng)修改    container.add(label1);    container.add(label2);    container.add(sourcefile);    container.add(targetfile);    container.add(buttonBrowseSource);    container.add(buttonBrowseTarget);    container.add(buttonEncrypt);    container.add(buttonDecrypt);  }  public static void main(String args[]) {    new MainForm();  }}

BrowseAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFileChooser;import javax.swing.filechooser.FileNameExtensionFilter;public class BrowseAction implements ActionListener {  @Override  public void actionPerformed(ActionEvent e) {    if (e.getSource().equals(MainForm.buttonBrowseSource)) {      JFileChooser fcDlg = new JFileChooser();      fcDlg.setDialogTitle("請(qǐng)選擇待加密或解密的文件...");      FileNameExtensionFilter filter = new FileNameExtensionFilter(          "文本文件(*.txt;*.kcd)", "txt", "kcd");      fcDlg.setFileFilter(filter);      int returnVal = fcDlg.showOpenDialog(null);      if (returnVal == JFileChooser.APPROVE_OPTION) {        String filepath = fcDlg.getSelectedFile().getPath();        MainForm.sourcefile.setText(filepath);      }    } else if (e.getSource().equals(MainForm.buttonBrowseTarget)) {      JFileChooser fcDlg = new JFileChooser();      fcDlg.setDialogTitle("請(qǐng)選擇加密或解密后的文件存放目錄");      fcDlg.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);      int returnVal = fcDlg.showOpenDialog(null);      if (returnVal == JFileChooser.APPROVE_OPTION) {        String filepath = fcDlg.getSelectedFile().getPath();        MainForm.targetfile.setText(filepath);      }    }  }}

EncryptAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JOptionPane;public class EncryptAction implements ActionListener {  @Override  public void actionPerformed(ActionEvent e) {    // TODO Auto-generated method stub    if (MainForm.sourcefile.getText().isEmpty()) {      JOptionPane.showMessageDialog(null, "請(qǐng)選擇待加密文件!");    }    else if (MainForm.targetfile.getText().isEmpty()) {      JOptionPane.showMessageDialog(null, "請(qǐng)選擇加密后文件存放目錄!");    }    else {      String sourcepath = MainForm.sourcefile.getText();      String targetpath = MainForm.targetfile.getText();      File file = new File(sourcepath);      String filename = file.getName();      File dir = new File(targetpath);      if (file.exists() && dir.isDirectory()) {        File result = new File(getFinalFile(targetpath, filename));        if (!result.exists()) {          try {            result.createNewFile();          } catch (IOException e1) {            JOptionPane.showMessageDialog(null,                "目標(biāo)文件創(chuàng)建失敗,請(qǐng)檢查目錄是否為只讀!");          }        }        try {          FileReader fr = new FileReader(file);          FileWriter fw = new FileWriter(result);          int ch = 0;          while ((ch = fr.read()) != -1) {            // System.out.print(Encrypt(ch));            fw.write(Encrypt(ch));          }          fw.close();          fr.close();          JOptionPane.showMessageDialog(null, "加密成功!");        } catch (Exception e1) {          JOptionPane.showMessageDialog(null, "未知錯(cuò)誤!");        }      }      else if (!file.exists()) {        JOptionPane.showMessageDialog(null, "待加密文件不存在!");      } else {        JOptionPane.showMessageDialog(null, "加密后文件存放目錄不存在!");      }    }  }  public char Encrypt(int ch) {    int x = ch + 1;    return (char) (x);  }  public String getFinalFile(String targetpath, String filename) {    int length = filename.length();    String finalFileName = filename.substring(0, length - 4);    String finalFile = targetpath + "http://" + finalFileName + ".kcd";    return finalFile;  }}

DecryptAction.java

package com.lidi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JOptionPane;public class DecryptAction implements ActionListener {  @Override  public void actionPerformed(ActionEvent e) {    // TODO Auto-generated method stub    if (MainForm.sourcefile.getText().isEmpty()) {      JOptionPane.showMessageDialog(null, "請(qǐng)選擇待解密文件!");    }    else if (MainForm.targetfile.getText().isEmpty()) {      JOptionPane.showMessageDialog(null, "請(qǐng)選擇解密后文件存放目錄!");    }    else {      String sourcepath = MainForm.sourcefile.getText();      String targetpath = MainForm.targetfile.getText();      File file = new File(sourcepath);      String filename = file.getName();      File dir = new File(targetpath);      if (file.exists() && dir.isDirectory()) {        File result = new File(getFinalFile(targetpath, filename));        if (!result.exists()) {          try {            result.createNewFile();          } catch (IOException e1) {            JOptionPane.showMessageDialog(null,                "目標(biāo)文件創(chuàng)建失敗,請(qǐng)檢查目錄是否為只讀!");          }        }        try {          FileReader fr = new FileReader(file);          FileWriter fw = new FileWriter(result);          int ch = 0;          while ((ch = fr.read()) != -1) {            // System.out.print(Encrypt(ch));            fw.write(Decrypt(ch));          }          fw.close();          fr.close();          JOptionPane.showMessageDialog(null, "解密成功!");        } catch (Exception e1) {          JOptionPane.showMessageDialog(null, "未知錯(cuò)誤!");        }      }      else if (!file.exists()) {        JOptionPane.showMessageDialog(null, "待解密文件不存在!");      } else {        JOptionPane.showMessageDialog(null, "解密后文件存放目錄不存在!");      }    }  }  public char Decrypt(int ch) {    // double x = 0 - Math.pow(ch, 2);    int x = ch - 1;    return (char) (x);  }  public String getFinalFile(String targetpath, String filename) {    int length = filename.length();    String finalFileName = filename.substring(0, length - 4);    String finalFile = targetpath + "http://" + finalFileName + ".txt";    return finalFile;  }}

TextFieldAction.java

package com.lidi;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;public class TextFieldAction implements DocumentListener {  @Override  public void insertUpdate(DocumentEvent e) {    // TODO Auto-generated method stub    ButtonAjust();  }  @Override  public void removeUpdate(DocumentEvent e) {    // TODO Auto-generated method stub    ButtonAjust();  }  @Override  public void changedUpdate(DocumentEvent e) {    // TODO Auto-generated method stub    ButtonAjust();  }  public void ButtonAjust() {    String file = MainForm.sourcefile.getText();    if (file.endsWith("txt")) {      MainForm.buttonDecrypt.setEnabled(false);      MainForm.buttonEncrypt.setEnabled(true);    }    if (file.endsWith("kcd")) {      MainForm.buttonEncrypt.setEnabled(false);      MainForm.buttonDecrypt.setEnabled(true);    }  }}

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉节县| 页游| 高州市| 安康市| 万州区| 马关县| 财经| 松滋市| 汪清县| 溆浦县| 黄平县| 清水河县| 昭觉县| 平顺县| 湛江市| 阿克陶县| 沭阳县| 府谷县| 冷水江市| 萍乡市| 铁岭市| 彭水| 亚东县| 西平县| 新平| 民权县| 阿瓦提县| 平定县| 无棣县| 共和县| 通州区| 南澳县| 内乡县| 浦城县| 岳西县| 蓝山县| 奈曼旗| 武山县| 惠州市| 定结县| 康平县|