文字转码与解码小程(用于秘密聊天)
import java.awt.*;
import javax.swing.*;
import java.net.*;
import java.awt.event.*;
public class Demo extends JFrame
{
public static void main(String[] args)
{
Demo demo=new Demo();
demo.init();
}
public void init()
{
setTitle("文件加码和解码");
setBounds(200,200,400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
//主面板
JPanel mainJpame=new JPanel();
mainJpame.setLayout(new BorderLayout());
setContentPane(mainJpame);
JPanel jp1=new JPanel ();
jp1.setBorder(BorderFactory.createEtchedBorder());
jp1.setPreferredSize(new Dimension(400,50));
mainJpame.add(jp1,BorderLayout.NORTH);
jp1.setLayout(new BorderLayout());
JLabel jl1=new JLabel(" 文字加码与解码");
jl1.setFont(new java.awt.Font("楷体",1,40));
jp1.add(jl1,BorderLayout.CENTER);
//文字加码
JPanel jp2=new JPanel ();
jp2.setBorder(BorderFactory.createTitledBorder("加码"));
jp2.setPreferredSize(new Dimension(400,150));
mainJpame.add(jp2,BorderLayout.CENTER);
jp2.setLayout(new FlowLayout(1,10,10));
JTextField jt1=new JTextField(25);
JButton jb1=new JButton("加码");
JTextArea jta1=new JTextArea(4,30);
jp2.add(jt1);
jp2.add(jb1);
jp2.add(jta1);
//文字解码
JPanel jp3=new JPanel ();
jp3.setBorder(BorderFactory.createTitledBorder("解码"));
jp3.setPreferredSize(new Dimension(400,150));
mainJpame.add(jp3,BorderLayout.SOUTH);
jp3.setLayout(new FlowLayout(1,10,10));
JTextField jt2=new JTextField(25);
JButton jb2=new JButton("解码");
JTextArea jta2=new JTextArea(4,30);
jp3.add(jt2);
jp3.add(jb2);
jp3.add(jta2);
setVisible(true);
//添加监听事件
jb1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
String strjt1=jt1.getText();
String strjta1=AddPassword(strjt1);//文字加码
jta1.setText(strjta1);
}
});
//添加Enter键确认功能
jt1.addKeyListener(new KeyListener()
{
@Override
public void keyPressed(KeyEvent e)
{
int t=e.getKeyCode();//返回此事件中键向关联的字符
if(t==KeyEvent.VK_ENTER)
{
String strjt1=jt1.getText();
String strjta1=AddPassword(strjt1);//文字加码
jta1.setText(strjta1);
}
}
@Override
public void keyReleased(KeyEvent e)
{
}
@Override
public void keyTyped(KeyEvent e)
{
}
});
jb2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
String strjt2=jt2.getText();
String strjta2=SubPassword(strjt2);//文字加码
jta2.setText(strjta2);
}
});
jt2.addKeyListener(new KeyListener()
{
@Override
public void keyPressed(KeyEvent e)
{
int t=e.getKeyCode();//返回此事件中键向关联的字符
if(t==KeyEvent.VK_ENTER)
{
String strjt2=jt2.getText();
String strjta2=SubPassword(strjt2);//文字加码
jta2.setText(strjta2);
}
}
@Override
public void keyReleased(KeyEvent e)
{
}
@Override
public void keyTyped(KeyEvent e)
{
}
});
}
//加码方法
public static String AddPassword(String str1)
{
String encode="";
try
{
encode=URLEncoder.encode(str1,"GBK");
}
catch(Exception e)
{
System.out.println("文字加码出错");
}
return encode;
}
//解码方法
public static String SubPassword(String str2)
{
String decode="";
try
{
decode=URLDecoder.decode(str2,"GBK");
}
catch(Exception e)
{
System.out.println("文字解码错误");
}
return decode;
}
}