婴语翻译器
用Java写的一个非常简单的程序,可以将一句话翻译成啊吧啊吧,使用了Java Swing。
一. UI
UI 使用java 的Swing组件,上下两个JTextArea ,两个button。
两个时间监听,获取上面文本框的内容加密后输出到下面文本框,获取下面文本框的内容解密后输出到上面文本框。
public class EncryptionDecryptionGUI extends JFrame {
private final JTextArea upperTextArea;
private final JTextArea lowerTextArea;
public EncryptionDecryptionGUI() {
setTitle("啊吧翻译器 @jinnanDu");
setSize(800, 1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// 设置字体
Font font = new Font("SimSun", Font.PLAIN, 16);
// 创建并添加上面的文本
upperTextArea = new JTextArea(5, 20);
upperTextArea.setLineWrap(true);
upperTextArea.setWrapStyleWord(true);
upperTextArea.setPreferredSize(new Dimension(500, 120));
upperTextArea.setFont(font);
JPanel upperPanel = new JPanel();
upperPanel.add(new JLabel("输入加密:"));
upperPanel.add(upperTextArea);
add(upperPanel, BorderLayout.NORTH);
// 创建并添加下面的文本
lowerTextArea = new JTextArea(10, 25);
lowerTextArea.setLineWrap(true);
lowerTextArea.setWrapStyleWord(true);
lowerTextArea.setPreferredSize(new Dimension(500, 750));
lowerTextArea.setFont(font);
JScrollPane lowerScrollPane = new JScrollPane(lowerTextArea);
add(lowerScrollPane, BorderLayout.CENTER);
JPanel lowerPanel = new JPanel();
lowerPanel.add(new JLabel("输入解密:"));
lowerPanel.add(lowerTextArea);
add(lowerPanel, BorderLayout.CENTER);
// 创建并添加按钮
JButton encryptButton = new JButton("加密");
JButton decryptButton = new JButton("解密");
abaaba ab = new abaaba();
encryptButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String upInput = upperTextArea.getText();
String lowShow = ab.encryAba(upInput);
lowerTextArea.setText(lowShow);
}
});
decryptButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String lowInput = lowerTextArea.getText();
String upShow = ab.decryAba(lowInput);
upperTextArea.setText(upShow);
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(encryptButton);
buttonPanel.add(decryptButton);
add(buttonPanel, BorderLayout.SOUTH);
setVisible(true);
}
}
二. Encryption&Decryption
程序非常简单,核心就是以下加密解密两个方法。
- 加密:将字符串二进制表示转换为由中文字符'吧'和'啊'组成的字符串。
- 解密:将啊吧转换为人类可读的字符串。
//将字符串转换为二进制
public String encryAba(String chineseString){
if(chineseString.isEmpty()){
throw new NullPointerException("加密的数据不能为空");
}
byte[] bytes = chineseString.getBytes();
StringBuilder binaryString = new StringBuilder();
for (byte b : bytes) {
// 将每个字节转换为8位二进制字符串
for (int i = 7; i >= 0; i--) {
binaryString.append((b & (1 << i))!= 0? '吧' : '啊');
}
}
return binaryString.toString();
}
public String decryAba(String aba){
if(aba.isEmpty()){
throw new NullPointerException("解密的数据不能为空");
}
StringBuilder binaryString = new StringBuilder();
for (char c : aba.toCharArray()) {
if (c == '啊') {
binaryString.append('0');
} else if (c == '吧') {
binaryString.append('1');
}
}
if (binaryString.length() % 8!= 0) {
throw new IllegalArgumentException("二进制字符串长度必须是8的倍数");
}
byte[] bytes = new byte[binaryString.length() / 8];
for (int i = 0; i < binaryString.length(); i += 8) {
String byteBinary = binaryString.substring(i, i + 8);
bytes[i / 8] = (byte) Integer.parseInt(byteBinary, 2);
}
return new String(bytes);
}
三. Package
打包成jar,再使用Launch4j将jar转换为windows 可执行的exe。
双击执行,效果如下: