虚拟银行手机app,农业建设工商邮政招商中国,网银转账虚拟截图jar版

851 阅读3分钟

下载地址:www.wenshushu.vip/download.ph…

基于Java实现的虚拟银行转账截图生成器JAR版本,支持农业银行、建设银行、工商银行、邮政储蓄、招商银行和中国银行的界面模拟。代码采用Swing图形界面,生成高仿真转账截图。

代码功能说明:

  1. 主程序BankScreenshotGenerator.java实现了一个完整的Swing图形界面应用
  2. 支持六大银行(农业/建设/工商/邮政/招商/中国银行)的转账截图模拟生成
  3. 可自定义转账金额、付款/收款账户信息等关键数据
  4. 生成的截图包含银行logo、交易详情、电子印章等逼真元素
  5. 提供交易编号自动生成和账户信息脱敏处理功能
  6. 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>