(一)、加密:
Encrypt.java类:
package cn.hncu;
import java.util.ArrayList;
import java.util.Arrays;
public class Encrypt {
private String message;
private String key;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Encrypt() {
}
//(1)自定义字母表填满替换方格
public char[][] letterTable(){
char[][] a=new char[6][6];//建立一个6行6列的二维数组,利用密文来对照此表中的每个字符,
a[0][1]='A';a[0][2]='D';a[0][3]='F';a[0][4]='G';a[0][5]='X';
a[1][0]='A';a[2][0]='D';a[3][0]='F';a[4][0]='G';a[5][0]='X';
a[1][1]='b';a[1][2]='t';a[1][3]='a';a[1][4]='l';a[1][5]='p';
a[2][1]='d';a[2][2]='h';a[2][3]='o';a[2][4]='z';a[2][5]='k';
a[3][1]='q';a[3][2]='f';a[3][3]='v';a[3][4]='s';a[3][5]='n';
a[4][1]='g';a[4][2]='j';a[4][3]='c';a[4][4]='u';a[4][5]='x';
a[5][1]='m';a[5][2]='r';a[5][3]='e';a[5][4]='w';a[5][5]='y';
return a;
}
//(2)获得中间替换结果
//中间替换结果是建立一个集合,集合中的第一个list放置明文,第二个list放置替换后的结果,以供下次使用替换结果
public ArrayList<Object> midRes(){
char[] chMess=message.toCharArray();//将明文变为字符数组
char[][] chLetter=letterTable();//调用整个字母表替换方格
ArrayList<String> chList=new ArrayList<String>();//用于放置明文的集合
ArrayList<String> strList=new ArrayList<String>();//用户放置替换结果的集合
ArrayList<Object> list=new ArrayList<Object>();//用于放置两个集合的总集合
list.add(chList);//将明文集合添加到list中
list.add(strList);//将替换结果添加到list中
//依次将明文的每个字符与字母表中的每个字符做比较
for(int k=0;k<chMess.length;k++){
for(int i=0;i<chLetter.length;i++){//第i行
for(int j=0;j<chLetter[i].length;j++){//第j列
if(chMess[k]==chLetter[i][j]){//第k个明文字符是否与字母表中的某一个相等
String ch=chMess[k]+"";//将字母转换为字符串
String str=(chLetter[i][0]+""+chLetter[0][j]);
chList.add(ch);
strList.add(str);
}
}
}
}
return list;//返回出集合结果
}
//(3)利用一个移位密钥加密
//得到移位加密后的格子
private char[][] shiftTable(){
ArrayList<String> list=(ArrayList<String>) midRes().get(1);//得到中间替换结果的集合
Object[] objs=list.toArray();//将其list转换为数组
StringBuffer strMidRes=new StringBuffer();//此字符串用于追加加密后的每个字符
for(Object s:objs){
strMidRes.append(s);//进行追加
}
char[] chKey=key.toUpperCase().toCharArray();//将旧密钥全部变为大写并且转换为字符数组
int n=strMidRes.length();//整个中间密文的长度
int col=chKey.length;//新的移位加密后的格子的列数
int row=n%col==0?n/col:n/col+1;//新的移位加密后的格子的行数
int k=0;
char[][] shiftTable=new char[row+1][col];//创建一个新的移位加密后的新格子
for(int i=0;i<shiftTable.length;i++){
for(int j=0;j<shiftTable[i].length;j++){
if(i==0){
shiftTable[i][j]=chKey[j];//
}else{
if(k<n){
shiftTable[i][j]=strMidRes.charAt(k);//获得中间密文的第k个
k++;
}
if(k==n && n%col!=0){//根据题目要求:最后不足一行的部分全部用X填充
for(int t=n%col;t<col;t++){
shiftTable[i][t]='X';
}
}
}
}
}
return shiftTable;
}
//(4)按照字母顺序排列密钥,形成新密文
public StringBuffer sortLetter(){
StringBuffer strbuf=new StringBuffer();
char[][] chTemp=shiftTable();//先得到整个移位后的格子
char[] chKey=key.toUpperCase().toCharArray();
Arrays.sort(chKey);
for(int i=0;i<chKey.length;i++){
for(int j=0;j<chTemp[0].length;j++){
if(chKey[i]==chTemp[0][j]){
for(int x=1;x<chTemp.length;x++){
strbuf.append(chTemp[x][j]);
}
strbuf.append(" ");
}
}
}
System.out.println(strbuf);
return strbuf;
}
}
(二)解密:
Decrypted.java类:
package cn.hncu;
import java.util.Arrays;
public class Decrypted {
private String ciphertext;
private String key;
public Decrypted(){
}
public String getCiphertext() {
return ciphertext;
}
public void setCiphertext(String ciphertext) {
this.ciphertext = ciphertext;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
/*排列密钥的字母顺序,根据新密钥、旧密钥排列顺序关系,
*排列出旧密钥的密文:即得到sortLetter()数组
*/
private char[][] sortLetter(){
String key2=key;//将旧密钥key赋给新密钥key2
char[] chKey=key.toCharArray();//旧密钥变为字符数组,需要使用
char[] chKey2=key2.toCharArray();//新密钥也变为字符数组,也是需要使用到的
Arrays.sort(chKey2);//最关键的一步:密钥排序
char[] chCiphertext=ciphertext.replaceAll(" ", "").toCharArray();//替换密文中的所有空格为空,并将其变为字符数组
int row=chCiphertext.length/chKey.length;//根据密文字符的总个数与密钥字符的个数计算出新格子的行数
int col=chKey.length;//密钥字符的个数即为新格子的列数
char[][] chCipher=new char[row][col];//建立密文二维数组
/*
* 用for循环依次遍历两个密钥中的所有字符,
* 如果正好相等,则将旧密钥格子整列赋给新密钥格子对应的一列
*/
for(int i=0;i<chKey.length;i++){
for(int j=0;j<chKey2.length;j++){
int len=col*j;
if(chKey[i]==chKey2[j]){
for(int i2=0;i2<row;i2++){
chCipher[i2][i]=chCiphertext[len++];//将整列的字符赋给新格子列
}
}
}
}
return chCipher;
}
/*
* 解密查看中间替换结果:
* 通过得到的反向密文,分别以两个字符为一组计算出其字符对应的坐标,
* 将找到的字符追加到sb中,此sb便是最后解密出的明文
*/
public StringBuffer shift(){
StringBuffer res=new StringBuffer();
char[][] chLetter=sortLetter();
char[][] leters= new Encrypt().letterTable();//得到整个字母表
char[] temp=new char[25];
int k=0;
for(int i=0;i<chLetter.length;i++){
for(int j=0;j<chLetter[i].length;j++){
temp[k]=chLetter[i][j];//依次拿出每个字母表中的字符
if((k+1)%2==0){
int r=trans(temp[k-1]);//因为得到的是最外行和最外列的字符,需要得到其对应的数字坐标,这里用到一个转换方法
int c=trans(temp[k]);
res.append(leters[r][c]);
}
k++;
}
}
return res;
}
private int trans(char ch){
int n=0;
switch(ch){
case 'A':n=1;break;
case 'D':n=2;break;
case 'F':n=3;break;
case 'G':n=4;break;
case 'X':n=5;break;
}
return n;
}
}
(三)、值对象:
FileMessage.java类:
package cn.hncu;
public class FileMessage {
private String fileurlMessSrc;//加密明文地址
private String fileurlCry;//加密密文地址
private String fileurlCry2;//解密密文地址
private String fileurlMessSrc2;//解密明文地址
private String key;
private char[][] letters;
public String getFileurlMessSrc() {
return fileurlMessSrc;
}
public void setFileurlMessSrc(String fileurlMessSrc) {
this.fileurlMessSrc = fileurlMessSrc;
}
public String getFileurlCry() {
return fileurlCry;
}
public void setFileurlCry(String fileurlCry) {
this.fileurlCry = fileurlCry;
}
public String getFileurlCry2() {
return fileurlCry2;
}
public void setFileurlCry2(String fileurlCry2) {
this.fileurlCry2 = fileurlCry2;
}
public String getFileurlMessSrc2() {
return fileurlMessSrc2;
}
public void setFileurlMessSrc2(String fileurlMessSrc2) {
this.fileurlMessSrc2 = fileurlMessSrc2;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public char[][] getLetters() {
return letters;
}
public void setLetters(char[][] letters) {
this.letters = letters;
}
}
(四)、文件工具:
FileUtils.java类:
package cn.hncu.utils;
import java.awt.HeadlessException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import cn.hncu.Decrypted;
import cn.hncu.Encrypt;
import cn.hncu.FileMessage;
public class FileUtils {
public static String openFile() {
File file=null;
try {
JFileChooser jfile=new JFileChooser();
jfile.showDialog(null, "打开");
file=jfile.getSelectedFile();
System.out.println(file.toString());
} catch (HeadlessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
return file.toString();
}
}
}
(五)、图形界面:
/*
* mainFrame.java
*
* Created on __DATE__, __TIME__
*/
package cn.hncu.ui;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
import cn.hncu.Decrypted;
import cn.hncu.Encrypt;
import cn.hncu.FileMessage;
import cn.hncu.utils.FileUtils;
/**
*
* @author __USER__
*/
public class mainFrame extends javax.swing.JFrame {
/** Creates new form mainFrame */
public mainFrame() {
initComponents();
setTitle("ADFGX密码加密和解密");
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
//初始化所有参数:
FileMessage filemess=new FileMessage();
private void initComponents() {
jSplitPane1 = new javax.swing.JSplitPane();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
tfdkey = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jtrepl = new javax.swing.JTextArea();
btnSave = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
tfdCry2 = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfdmessSrc2 = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
tfdmessSrc = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
tfdCry = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
jtRepRes = new javax.swing.JTextArea();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
jtMess = new javax.swing.JTextArea();
jScrollPane4 = new javax.swing.JScrollPane();
jtCry = new javax.swing.JTextArea();
btnEncrypt = new javax.swing.JButton();
btnDecrypt = new javax.swing.JButton();
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem();
saveAsMenuItem = new javax.swing.JMenuItem();
exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu();
cutMenuItem = new javax.swing.JMenuItem();
copyMenuItem = new javax.swing.JMenuItem();
pasteMenuItem = new javax.swing.JMenuItem();
deleteMenuItem = new javax.swing.JMenuItem();
helpMenu = new javax.swing.JMenu();
contentsMenuItem = new javax.swing.JMenuItem();
aboutMenuItem = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setFocusCycleRoot(false);
setMinimumSize(new java.awt.Dimension(1400, 700));
getContentPane().setLayout(null);
jLabel1.setFont(new java.awt.Font("宋体", 1, 24));
jLabel1.setForeground(new java.awt.Color(255, 0, 0));
jLabel1.setText("ADFGX\u5bc6\u7801");
getContentPane().add(jLabel1);
jLabel1.setBounds(490, 10, 130, 30);
jLabel2.setFont(new java.awt.Font("宋体", 1, 14));
jLabel2.setText("\u8bbe\u7f6e\u5bc6\u94a5\uff1a");
getContentPane().add(jLabel2);
jLabel2.setBounds(60, 80, 90, 20);
tfdkey.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
getContentPane().add(tfdkey);
tfdkey.setBounds(130, 80, 400, 30);
jLabel3.setFont(new java.awt.Font("宋体", 1, 14));
jLabel3.setText("\u8bbe\u7f6e\u66ff\u6362\u65b9\u683c\uff1a");
getContentPane().add(jLabel3);
jLabel3.setBounds(60, 120, 110, 20);
jtrepl.setColumns(20);
jtrepl.setFont(new java.awt.Font("Monospaced", 1, 18));
jtrepl.setRows(5);
jScrollPane1.setViewportView(jtrepl);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(60, 150, 470, 180);
/初始化字母表
Encrypt en = new Encrypt();
final char[][] chs = en.letterTable();
for (int i = 0; i < chs.length; i++) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < chs[i].length; j++) {
if (j == 0) {
sb.append(chs[i][j]);
} else {
sb.append("\t" + chs[i][j]);
}
}
String s = new String(sb);
jtrepl.append(s + "\n");
s = "";
}
/***
* 保存设置
*/
btnSave.setFont(new java.awt.Font("宋体", 1, 14));
btnSave.setText("\u4fdd\u5b58\u8bbe\u7f6e");
btnSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSaveActionPerformed(evt);
}
private void btnSaveActionPerformed(ActionEvent evt) {
String key=tfdkey.getText();
filemess.setKey(key);
filemess.setLetters(chs);
System.out.println("保存设置");
}
});
getContentPane().add(btnSave);
btnSave.setBounds(230, 350, 100, 30);
jLabel4.setFont(new java.awt.Font("宋体", 1, 14));
jLabel4.setText("\u660e\u6587\u6587\u4ef6\uff1a");
getContentPane().add(jLabel4);
jLabel4.setBounds(870, 140, 80, 30);
/**
* 解密:密文文件
*/
tfdCry2.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
tfdCry2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tfdCry2MouseClicked(evt);
}
private void tfdCry2MouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("解密密文文件");
String fileurlCry2=FileUtils.openFile();
tfdCry2.setText(fileurlCry2);
filemess.setFileurlCry2(fileurlCry2);
}
});
getContentPane().add(tfdCry2);
tfdCry2.setBounds(630, 140, 210, 30);
jLabel5.setFont(new java.awt.Font("宋体", 1, 14));
jLabel5.setText("\u5bc6\u6587\u6587\u4ef6\uff1a");
getContentPane().add(jLabel5);
jLabel5.setBounds(550, 140, 80, 30);
/**
* 解密:明文文件
*/
tfdmessSrc2.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
tfdmessSrc2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tfdmessSrc2MouseClicked(evt);
}
private void tfdmessSrc2MouseClicked(MouseEvent evt) {
System.out.println("解密明文文件");
String fileurlMessSrc2=FileUtils.openFile();
tfdmessSrc2.setText(fileurlMessSrc2);
filemess.setFileurlMessSrc2(fileurlMessSrc2);
}
});
getContentPane().add(tfdmessSrc2);
tfdmessSrc2.setBounds(950, 140, 150, 30);
jLabel6.setFont(new java.awt.Font("宋体", 1, 14));
jLabel6.setText("\u5bc6\u6587\u6587\u4ef6\uff1a");
getContentPane().add(jLabel6);
jLabel6.setBounds(870, 80, 80, 30);
/**
* 加密:明文文件
*/
tfdmessSrc.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
tfdmessSrc.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tfdmessSrcMouseClicked(evt);
}
private void tfdmessSrcMouseClicked(MouseEvent evt) {
System.out.println("加密明文文件");
String fileurlMessSrc=FileUtils.openFile();
filemess.setFileurlMessSrc(fileurlMessSrc);
tfdmessSrc.setText(fileurlMessSrc);
}
});
getContentPane().add(tfdmessSrc);
tfdmessSrc.setBounds(630, 80, 210, 30);
jLabel7.setFont(new java.awt.Font("宋体", 1, 14));
jLabel7.setText("\u660e\u6587\u6587\u4ef6\uff1a");
getContentPane().add(jLabel7);
jLabel7.setBounds(550, 80, 80, 30);
/**
* 加密密文文件
*/
tfdCry.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18));
tfdCry.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tfdCryMouseClicked(evt);
}
private void tfdCryMouseClicked(MouseEvent evt) {
System.out.println("加密密文文件");
String fileurlCry=FileUtils.openFile();
filemess.setFileurlCry(fileurlCry);
tfdCry.setText(fileurlCry);
}
});
getContentPane().add(tfdCry);
tfdCry.setBounds(950, 80, 150, 30);
jLabel8.setFont(new java.awt.Font("宋体", 1, 14));
jLabel8.setText("\u66ff\u6362\u7ed3\u679c\uff1a");
getContentPane().add(jLabel8);
jLabel8.setBounds(550, 240, 80, 30);
jtRepRes.setColumns(20);
jtRepRes.setEditable(false);
jtRepRes.setFont(new java.awt.Font("Monospaced", 1, 18));
jtRepRes.setRows(5);
jScrollPane2.setViewportView(jtRepRes);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(630, 200, 650, 90);
jLabel9.setFont(new java.awt.Font("宋体", 1, 14));
jLabel9.setText("\u660e\u6587\uff1a");
getContentPane().add(jLabel9);
jLabel9.setBounds(560, 300, 50, 30);
jLabel10.setFont(new java.awt.Font("宋体", 1, 14));
jLabel10.setText("\u5bc6\u6587\uff1a");
getContentPane().add(jLabel10);
jLabel10.setBounds(930, 310, 50, 20);
jtMess.setColumns(20);
jtMess.setEditable(false);
jtMess.setFont(new java.awt.Font("Monospaced", 1, 18));
jtMess.setRows(5);
jScrollPane3.setViewportView(jtMess);
getContentPane().add(jScrollPane3);
jScrollPane3.setBounds(630, 310, 290, 250);
jtCry.setColumns(20);
jtCry.setEditable(false);
jtCry.setFont(new java.awt.Font("Monospaced", 1, 18));
jtCry.setRows(5);
jScrollPane4.setViewportView(jtCry);
getContentPane().add(jScrollPane4);
jScrollPane4.setBounds(980, 310, 300, 250);
/**
* 按钮:加密
*/
btnEncrypt.setFont(new java.awt.Font("宋体", 1, 14));
btnEncrypt.setText("\u52a0\u5bc6");
btnEncrypt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEncryptActionPerformed(evt);
}
private void btnEncryptActionPerformed(ActionEvent evt) {
System.out.println("按钮:加密");
//FileUtils.encryptFile(filemess);
Encrypt en=new Encrypt();
en.setKey(filemess.getKey());
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader(new File(filemess.getFileurlMessSrc())));
bw=new BufferedWriter(new FileWriter(new File(filemess.getFileurlCry())));
String str=null;
while((str=br.readLine())!=null){
jtMess.append(str+"\n");
en.setMessage(str.replaceAll(" ", "").toLowerCase());
String s=new String(en.sortLetter());
bw.write(s);
jtCry.append(s+"\n");
String s1=en.midRes().get(0).toString().replaceAll(",", " ");
String s2=en.midRes().get(1).toString().replaceAll(",", "");
jtRepRes.append(s1+"\n");
jtRepRes.append(s2+"\n");
bw.write("\r\n");
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "文件加密成功!");
}
}
});
getContentPane().add(btnEncrypt);
btnEncrypt.setBounds(1120, 80, 80, 30);
/**
* 按钮:解密
*/
btnDecrypt.setFont(new java.awt.Font("宋体", 1, 14));
btnDecrypt.setText("\u89e3\u5bc6");
btnDecrypt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDecryptActionPerformed(evt);
}
private void btnDecryptActionPerformed(ActionEvent evt) {
System.out.println("按钮:解密");
Decrypted de=new Decrypted();
de.setKey(filemess.getKey());
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader(new File(filemess.getFileurlCry2())));
bw=new BufferedWriter(new FileWriter(new File(filemess.getFileurlMessSrc2())));
String str=null;
while((str=br.readLine())!=null){
System.out.println("密文:"+str);
jtCry.append(str+"\n");
de.setCiphertext((str.replaceAll(" ", "").toUpperCase()));
String s=new String(de.shift());
System.out.println("明文:"+s);
bw.write(s);
jtMess.append(s+"\n");
bw.write("\r\n");
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "文件解密成功!");
}
});
getContentPane().add(btnDecrypt);
btnDecrypt.setBounds(1120, 140, 80, 30);
fileMenu.setText("File");
openMenuItem.setText("Open");
fileMenu.add(openMenuItem);
saveMenuItem.setText("Save");
fileMenu.add(saveMenuItem);
saveAsMenuItem.setText("Save As ...");
fileMenu.add(saveAsMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setText("Edit");
cutMenuItem.setText("Cut");
editMenu.add(cutMenuItem);
copyMenuItem.setText("Copy");
editMenu.add(copyMenuItem);
pasteMenuItem.setText("Paste");
editMenu.add(pasteMenuItem);
deleteMenuItem.setText("Delete");
editMenu.add(deleteMenuItem);
menuBar.add(editMenu);
helpMenu.setText("Help");
contentsMenuItem.setText("Contents");
helpMenu.add(contentsMenuItem);
aboutMenuItem.setText("About");
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
pack();
}// </editor-fold>
//GEN-END:initComponents
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_exitMenuItemActionPerformed
System.exit(0);
}// GEN-LAST:event_exitMenuItemActionPerformed
/**
* @param args
* the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new mainFrame().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JButton btnDecrypt;
private javax.swing.JButton btnEncrypt;
private javax.swing.JButton btnSave;
private javax.swing.JMenuItem contentsMenuItem;
private javax.swing.JMenuItem copyMenuItem;
private javax.swing.JMenuItem cutMenuItem;
private javax.swing.JMenuItem deleteMenuItem;
private javax.swing.JMenu editMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JTextArea jtCry;
private javax.swing.JTextArea jtMess;
private javax.swing.JTextArea jtRepRes;
private javax.swing.JTextArea jtrepl;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenuItem openMenuItem;
private javax.swing.JMenuItem pasteMenuItem;
private javax.swing.JMenuItem saveAsMenuItem;
private javax.swing.JMenuItem saveMenuItem;
private javax.swing.JTextField tfdCry;
private javax.swing.JTextField tfdCry2;
private javax.swing.JTextField tfdkey;
private javax.swing.JTextField tfdmessSrc;
private javax.swing.JTextField tfdmessSrc2;
// End of variables declaration//GEN-END:variables
}
(六)、明文文件、密文文件、解密后文件: