最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年07月02日 11:08:27   投稿:hebedich  
這篇文章主要介紹了Java文件選擇對(duì)話框JFileChooser使用詳解的相關(guān)資料,需要的朋友可以參考下

文件加密器,操作過(guò)程肯定涉及到文件選擇器的使用,所以這里以文件加密器為例。下例為我自己寫的一個(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類型,則禁用解密按鈕;如果是.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 + "\\" + 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 + "\\" + 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)容了,希望大家能夠喜歡。

相關(guān)文章

  • 舉例詳解用Java實(shí)現(xiàn)web分頁(yè)功能的方法

    舉例詳解用Java實(shí)現(xiàn)web分頁(yè)功能的方法

    這篇文章主要介紹了舉例詳解用Java實(shí)現(xiàn)web分頁(yè)功能的方法,這種基本功能現(xiàn)一般通過(guò)Hibernate框架來(lái)完成,需要的朋友可以參考下
    2015-10-10
  • 理解java設(shè)計(jì)模式之建造者模式

    理解java設(shè)計(jì)模式之建造者模式

    這篇文章主要幫助大家理解java設(shè)計(jì)模式之建造者模式,對(duì)建造者模式,即生成器模式進(jìn)行實(shí)例講解,感興趣的朋友可以參考一下
    2016-02-02
  • SpringBoot整合OpenCV的實(shí)現(xiàn)示例

    SpringBoot整合OpenCV的實(shí)現(xiàn)示例

    這篇文章主要介紹了SpringBoot整合OpenCV的實(shí)現(xiàn)示例。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 基于ssm中dao接口@Param注解的用法

    基于ssm中dao接口@Param注解的用法

    這篇文章主要介紹了基于ssm中dao接口@Param注解的用法,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 淺談SpringBoot如何正確攔截thymeleaf異常

    淺談SpringBoot如何正確攔截thymeleaf異常

    Thymeleaf是一個(gè)模板引擎工具,主要用于頁(yè)面渲染操作,本文主要介紹了淺談SpringBoot如何正確攔截thymeleaf異常,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java中單例模式的七種寫法示例

    Java中單例模式的七種寫法示例

    作為一個(gè)Java開(kāi)發(fā)者,也許你覺(jué)得自己對(duì)單例模式的了解已經(jīng)足夠多了,但究竟你自己了解的程度到底怎樣呢?下面這篇文章主要給大家介紹了關(guān)于Java中單例模式的七種寫法,需要的朋友可以參考下
    2021-09-09
  • JavaWeb Spring注解Annotation深入學(xué)習(xí)

    JavaWeb Spring注解Annotation深入學(xué)習(xí)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb Spring注解Annotation,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Maven  pom.xml與settings.xml詳解

    Maven pom.xml與settings.xml詳解

    這篇文章主要介紹了Maven pom.xml與settings.xml詳解的相關(guān)資料,這里對(duì)pom.xml與setting.xml詳細(xì)的研究說(shuō)明,需要的朋友可以參考下
    2016-12-12
  • mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語(yǔ)句實(shí)例

    mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語(yǔ)句實(shí)例

    mybatisplus是個(gè)很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Java由淺入深細(xì)數(shù)數(shù)組的操作下

    Java由淺入深細(xì)數(shù)數(shù)組的操作下

    數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-04-04

最新評(píng)論

星子县| 漾濞| 萝北县| 安顺市| 扎鲁特旗| 大埔区| 佛冈县| 类乌齐县| 遂昌县| 疏勒县| 吉木乃县| 松潘县| 达尔| 南和县| 阿尔山市| 南陵县| 集安市| 四子王旗| 五峰| 武汉市| 珠海市| 田阳县| 犍为县| 西和县| 延川县| 古蔺县| 泸定县| 堆龙德庆县| 丽江市| 扬州市| 象山县| 西宁市| 绥滨县| 大理市| 临西县| 福安市| 池州市| 靖边县| 明光市| 阿合奇县| 横峰县|