下载地址:www.wenshushu.vip/download.ph…
基于Java实现的虚拟银行转账截图生成器JAR版本,支持农业银行、建设银行、工商银行、邮政储蓄、招商银行和中国银行的界面模拟。代码采用Swing图形界面,生成高仿真转账截图。
代码功能说明:
- 主程序BankScreenshotGenerator.java实现了一个完整的Swing图形界面应用
- 支持六大银行(农业/建设/工商/邮政/招商/中国银行)的转账截图模拟生成
- 可自定义转账金额、付款/收款账户信息等关键数据
- 生成的截图包含银行logo、交易详情、电子印章等逼真元素
- 提供交易编号自动生成和账户信息脱敏处理功能
- pom.xml配置了Maven项目结构和Java 11运行环境
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class BankScreenshotGenerator extends JFrame {
private JComboBox<String> bankSelector;
private JTextField amountField, fromAccountField, toAccountField, fromNameField, toNameField;
private JTextArea resultArea;
private JButton generateButton;
public BankScreenshotGenerator() {
setTitle("虚拟银行转账截图生成器 v1.0");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// 银行选择下拉框
String[] banks = {"农业银行", "建设银行", "工商银行", "邮政储蓄", "招商银行", "中国银行"};
bankSelector = new JComboBox<>(banks);
// 表单组件
JPanel formPanel = new JPanel(new GridLayout(6, 2, 10, 10));
formPanel.add(new JLabel("选择银行:"));
formPanel.add(bankSelector);
formPanel.add(new JLabel("转账金额:"));
amountField = new JTextField();
formPanel.add(amountField);
formPanel.add(new JLabel("付款账号:"));
fromAccountField = new JTextField();
formPanel.add(fromAccountField);
formPanel.add(new JLabel("付款人姓名:"));
fromNameField = new JTextField();
formPanel.add(fromNameField);
formPanel.add(new JLabel("收款账号:"));
toAccountField = new JTextField();
formPanel.add(toAccountField);
formPanel.add(new JLabel("收款人姓名:"));
toNameField = new JTextField();
formPanel.add(toNameField);
// 生成按钮
generateButton = new JButton("生成截图");
generateButton.addActionListener(e -> generateScreenshot());
// 结果展示区
resultArea = new JTextArea();
resultArea.setEditable(false);
// 添加组件到主界面
add(formPanel, BorderLayout.NORTH);
add(generateButton, BorderLayout.CENTER);
add(new JScrollPane(resultArea), BorderLayout.SOUTH);
}
private void generateScreenshot() {
String bank = (String) bankSelector.getSelectedItem();
String amount = amountField.getText();
String fromAccount = fromAccountField.getText();
String fromName = fromNameField.getText();
String toAccount = toAccountField.getText();
String toName = toNameField.getText();
// 验证输入
if (amount.isEmpty() || fromAccount.isEmpty() || fromName.isEmpty() ||
toAccount.isEmpty() || toName.isEmpty()) {
JOptionPane.showMessageDialog(this, "请填写所有字段!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
// 生成截图
BufferedImage screenshot = createBankScreenshot(bank, amount, fromAccount, fromName, toAccount, toName);
// 显示结果
resultArea.setText("成功生成" + bank + "转账截图!\n" +
"金额: " + amount + "元\n" +
"付款人: " + fromName + " (" + fromAccount + ")\n" +
"收款人: " + toName + " (" + toAccount + ")\n" +
"时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
// 显示截图预览
showImagePreview(screenshot);
}
private BufferedImage createBankScreenshot(String bank, String amount, String fromAccount,
String fromName, String toAccount, String toName) {
int width = 400;
int height = 700;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
// 背景色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 银行logo和标题
g.setColor(getBankColor(bank));
g.fillRect(0, 0, width, 60);
g.setColor(Color.WHITE);
g.setFont(new Font("微软雅黑", Font.BOLD, 20));
g.drawString(bank + "手机银行", 20, 35);
// 转账信息
g.setColor(Color.BLACK);
g.setFont(new Font("微软雅黑", Font.PLAIN, 14));
int y = 100;
g.drawString("转账详情", 20, y);
y += 30;
g.drawString("金额: " + amount + "元", 20, y);
y += 25;
g.drawString("付款账号: " + maskAccount(fromAccount), 20, y);
y += 25;
g.drawString("付款人: " + fromName, 20, y);
y += 25;
g.drawString("收款账号: " + maskAccount(toAccount), 20, y);
y += 25;
g.drawString("收款人: " + toName, 20, y);
y += 40;
// 交易信息
g.drawString("交易时间: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), 20, y);
y += 25;
g.drawString("交易编号: " + generateTransactionId(), 20, y);
y += 25;
g.drawString("状态: 转账成功", 20, y);
y += 40;
// 银行印章
g.setColor(Color.RED);
g.setFont(new Font("微软雅黑", Font.BOLD, 16));
g.drawString(bank + "电子业务专用章", width/2 - 80, height - 50);
g.dispose();
return image;
}
private Color getBankColor(String bank) {
switch(bank) {
case "农业银行": return new Color(0, 102, 0); // 绿色
case "建设银行": return new Color(0, 51, 153); // 蓝色
case "工商银行": return new Color(204, 0, 0); // 红色
case "邮政储蓄": return new Color(0, 153, 204); // 浅蓝
case "招商银行": return new Color(255, 102, 0); // 橙色
case "中国银行": return new Color(204, 0, 0); // 红色
default: return Color.BLUE;
}
}
private String maskAccount(String account) {
if (account.length() < 8) return account;
return account.substring(0, 4) + "****" + account.substring(account.length() - 4);
}
private String generateTransactionId() {
Random rand = new Random();
return String.format("%04d%02d%02d%06d",
Integer.parseInt(new SimpleDateFormat("yyyy").format(new Date())),
Integer.parseInt(new SimpleDateFormat("MM").format(new Date())),
Integer.parseInt(new SimpleDateFormat("dd").format(new Date())),
rand.nextInt(999999));
}
private void showImagePreview(BufferedImage image) {
JFrame previewFrame = new JFrame("截图预览");
previewFrame.setSize(image.getWidth() + 20, image.getHeight() + 40);
previewFrame.setLocationRelativeTo(null);
JLabel imageLabel = new JLabel(new ImageIcon(image));
previewFrame.add(imageLabel);
previewFrame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
BankScreenshotGenerator app = new BankScreenshotGenerator();
app.setLocationRelativeTo(null);
app.setVisible(true);
});
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.virtualbank</groupId>
<artifactId>screenshot-generator</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>BankScreenshotGenerator</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>