将使用另一个JButton的JButton

时间:2013-05-17 13:19:03

标签: java swing jpanel jbutton

package QADev_AcctReset;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.net.ServerSocket;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class AcctReset implements ActionListener {

    JTextField cardTextField;
    JButton cardButtonQA, cardButtonDEV, cardButtonResetA, cardButtonResetP;
    static JLabel frameLabel, frameLabel1, frameLabel2;

    public JPanel createContentPane() throws ClassNotFoundException,
            SQLException {

        JPanel resetGUI = new JPanel();
        resetGUI.setLayout(null);

        frameLabel1 = new JLabel();
        frameLabel1.setLocation(40, -40);
        frameLabel1.setSize(300, 100);
        frameLabel1.setHorizontalAlignment(0);
        resetGUI.add(frameLabel1);
        frameLabel1.setText("Enter Card / Cardless / SmartCheck");

        frameLabel2 = new JLabel();
        frameLabel2.setLocation(20, -20);
        frameLabel2.setSize(350, 100);
        frameLabel2.setHorizontalAlignment(0);
        frameLabel2.setFont(new Font("Aerial", Font.PLAIN, 9));
        resetGUI.add(frameLabel2);
        frameLabel2
                .setText("Legend: Card# = 19 digits, Cardless# = 10 digits, Check = 14, 17 or 18 digits");
        frameLabel2.setForeground(Color.RED);

        cardTextField = new JTextField("Enter Card or Cardless Number");
        cardTextField.setLocation(45, 38);
        cardTextField.setSize(300, 30);
        cardTextField.setHorizontalAlignment(0);
        cardTextField.setEditable(true);
        cardTextField.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                cardTextField.setText("");
                frameLabel.setText("");
                cardTextField.requestFocusInWindow();
                cardButtonResetA.setEnabled(true);
                cardButtonResetP.setEnabled(true);
            }
        });
        cardTextField.addActionListener(this);
        cardTextField.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
                    e.consume();
                }
            }
        });
        cardTextField.setDocument(new LengthRestrictedDocument(25));
        resetGUI.add(cardTextField);

        Image image = Toolkit.getDefaultToolkit().getImage("img/qa.png");
        ImageIcon icon = new ImageIcon(image);
        cardButtonQA = new JButton("", icon);
        cardButtonQA.setLocation(5, 38);
        cardButtonQA.setSize(35, 28);
        cardButtonQA.setVisible(true);
        cardButtonQA.addActionListener(this);
        resetGUI.add(cardButtonQA);

        Image image1 = Toolkit.getDefaultToolkit().getImage("img/dev.png");
        ImageIcon icon1 = new ImageIcon(image1);
        cardButtonDEV = new JButton("", icon1);
        cardButtonDEV.setLocation(350, 38);
        cardButtonDEV.setSize(35, 28);
        cardButtonDEV.setVisible(true);
        cardButtonDEV.addActionListener(this);
        resetGUI.add(cardButtonDEV);


        cardButtonResetA = new JButton("Reset Card To Active");
        cardButtonResetA.setLocation(5, 80);
        cardButtonResetA.setSize(185, 30);
        cardButtonResetA.setMnemonic('R');
        cardButtonResetA.setVisible(true);
        cardButtonResetA.addActionListener(this);
        resetGUI.add(cardButtonResetA);

        cardButtonResetP = new JButton("Reset To Pending (DL Req)");
        cardButtonResetP.setLocation(200, 80);
        cardButtonResetP.setSize(185, 30);
        cardButtonResetP.setMnemonic('P');
        cardButtonResetP.setVisible(true);
        cardButtonResetP.addActionListener(this);
        resetGUI.add(cardButtonResetP);

        frameLabel = new JLabel();
        frameLabel.setLocation(20, 80);
        frameLabel.setSize(350, 100);
        frameLabel.setHorizontalAlignment(0);
        frameLabel.setFont(new Font("Aerial", Font.BOLD, 10));
        frameLabel.setForeground(Color.BLUE);
        resetGUI.add(frameLabel);

        resetGUI.setOpaque(true);
        return resetGUI;

    }


    public void actionPerformed(ActionEvent a) {

        if (a.getSource() == cardButtonResetA) {
            try {
                Connection connection = getConnectionQA();
                String cardLeng = cardTextField.getText().trim();
                int cardLen = cardLeng.length();

                DateFormat dateForm = new SimpleDateFormat("MMddyy-HHmmss");
                Date date = new Date();
                BufferedWriter reportLog = null;
                File reportFile = new File("ResetLog.txt");

                if (cardLen == 19) {
                    // execute select query to identify the cust_id of the
                    // input
                    // card number.
                    String sql = getThisProperty("sql.select");
                    PreparedStatement stmt = connection.prepareStatement(sql);
                    stmt.setString(1, cardLeng);
                    ResultSet rs = stmt.executeQuery();
                    rs.next();
                    Integer custID = new Integer(rs.getInt("issue_cust_id"));

                    // execute delete in financial_txn table for resp_cd 52,
                    // 82
                    // and 59.
                    String sqldel = getThisProperty("sql.delete");
                    PreparedStatement stmtdel = connection
                            .prepareStatement(sqldel);
                    stmtdel.setInt(1, custID);
                    stmtdel.executeUpdate();

                    // execute update to make customer account to be Active.
                    String sqlupdateacct = getThisProperty("sql.updateacctactive");
                    PreparedStatement stmtacctactive = connection
                            .prepareStatement(sqlupdateacct);
                    stmtacctactive.setInt(1, custID);
                    stmtacctactive.executeUpdate();

                    // execute update to make the cust_pymt_opt status to be
                    // Active.
                    String sqlupdate = getThisProperty("sql.updateactive");
                    PreparedStatement stmtupdate = connection
                            .prepareStatement(sqlupdate);
                    stmtupdate.setInt(1, custID);
                    stmtupdate.executeUpdate();

                    // execute to delete velocity limit of the account.
                    String sqldelvel = getThisProperty("sql.deletevelo");
                    PreparedStatement stmtdelvel = connection
                            .prepareStatement(sqldelvel);
                    stmtdelvel.setInt(1, custID);
                    stmtdelvel.executeUpdate();

                    if (!reportFile.exists()) {
                        reportFile.createNewFile();
                    }
                    reportLog = new BufferedWriter(new FileWriter(reportFile
                            .getName(), true));
                    reportLog.write("Run Date/Time " + dateForm.format(date)
                            + " : Card # " + cardLeng
                            + " has been reset to be Active.\r\n");
                    reportLog.flush();
                    reportLog.close();

                    frameLabel.setText(cardLeng
                            + " Account Has Been Reset To Active");
                    cardTextField.setText(null);
                    connection.close();
                } else if (cardLen == 10) {
                    String sql = getThisProperty("sql.CLselect");
                    PreparedStatement stmt = connection.prepareStatement(sql);
                    stmt.setString(1, "%" + cardLeng + "_");
                    ResultSet rs = stmt.executeQuery();
                    rs.next();
                    Integer custID = new Integer(rs.getInt("issue_cust_id"));

                    // execute delete in financial_txn table for resp_cd 52,
                    // 82
                    // and 59.
                    String sqldel = getThisProperty("sql.delete");
                    PreparedStatement stmtdel = connection
                            .prepareStatement(sqldel);
                    stmtdel.setInt(1, custID);
                    stmtdel.executeUpdate();

                    // execute update to make customer account to be Active.
                    String sqlupdateacct = getThisProperty("sql.updateacctactive");
                    PreparedStatement stmtacctactive = connection
                            .prepareStatement(sqlupdateacct);
                    stmtacctactive.setInt(1, custID);
                    stmtacctactive.executeUpdate();

                    // execute update to make the cust_pymt_opt status to be
                    // Active.
                    String sqlupdate = getThisProperty("sql.updateactive");
                    PreparedStatement stmtupdate = connection
                            .prepareStatement(sqlupdate);
                    stmtupdate.setInt(1, custID);
                    stmtupdate.executeUpdate();

                    // execute to delete velocity limit of the account.
                    String sqldelvel = getThisProperty("sql.deletevelo");
                    PreparedStatement stmtdelvel = connection
                            .prepareStatement(sqldelvel);
                    stmtdelvel.setInt(1, custID);
                    stmtdelvel.executeUpdate();

                    if (!reportFile.exists()) {
                        reportFile.createNewFile();
                    }
                    reportLog = new BufferedWriter(new FileWriter(reportFile
                            .getName(), true));
                    reportLog.write("Run Date/Time " + dateForm.format(date)
                            + " : Cardless # " + cardLeng
                            + " has been reset to be Active.\r\n");
                    reportLog.flush();
                    reportLog.close();

                    frameLabel.setText(cardLeng
                            + " Account Has Been Reset To Active");
                    cardTextField.setText(null);
                    connection.close();
                } else if (cardLen == 14 || cardLen == 17 || cardLen == 18) {
                    String sql = getThisProperty("sql.select");
                    PreparedStatement stmt = connection.prepareStatement(sql);
                    stmt.setString(1, cardLeng);
                    ResultSet rs = stmt.executeQuery();
                    rs.next();
                    Integer custID = new Integer(rs.getInt("issue_cust_id"));

                    // execute delete in financial_txn table for resp_cd 52,
                    // 82
                    // and 59.
                    String sqldel = getThisProperty("sql.delete");
                    PreparedStatement stmtdel = connection
                            .prepareStatement(sqldel);
                    stmtdel.setInt(1, custID);
                    stmtdel.executeUpdate();

                    // execute update to make customer account to be Active.
                    String sqlupdateacct = getThisProperty("sql.updateacctactive");
                    PreparedStatement stmtacctactive = connection
                            .prepareStatement(sqlupdateacct);
                    stmtacctactive.setInt(1, custID);
                    stmtacctactive.executeUpdate();

                    // execute update to make the cust_pymt_opt status to be
                    // Active.
                    String sqlupdate = getThisProperty("sql.updateactive");
                    PreparedStatement stmtupdate = connection
                            .prepareStatement(sqlupdate);
                    stmtupdate.setInt(1, custID);
                    stmtupdate.executeUpdate();

                    // execute to delete velocity limit of the account.
                    String sqldelvel = getThisProperty("sql.deletevelo");
                    PreparedStatement stmtdelvel = connection
                            .prepareStatement(sqldelvel);
                    stmtdelvel.setInt(1, custID);
                    stmtdelvel.executeUpdate();

                    if (!reportFile.exists()) {
                        reportFile.createNewFile();
                    }
                    reportLog = new BufferedWriter(new FileWriter(reportFile
                            .getName(), true));
                    reportLog.write("Run Date/Time " + dateForm.format(date)
                            + " : Check # " + cardLeng
                            + " has been reset to be Active.\r\n");
                    reportLog.flush();
                    reportLog.close();

                    frameLabel.setText(cardLeng
                            + " SCheck Account Has Been Reset To Active");
                    cardTextField.setText(null);
                    connection.close();
                } else if (cardLen != 10 && cardLen != 19 && cardLen != 14
                        && cardLen != 17 && cardLen != 18) {
                    frameLabel.setText("Enter Valid Input");
                    cardTextField.requestFocusInWindow();
                }
                connection.close();
            } catch (ClassNotFoundException e) {
                frameLabel.setText("Java Class Error");
                // e.printStackTrace();
            } catch (SQLException e) {
                frameLabel.setText("No Result Found, Enter a Valid Account");
                // e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else if (a.getSource() == cardButtonResetP) {
            try {
                Connection connection = getConnectionQA();
                String cardLeng = cardTextField.getText().trim();
                int cardLenP = cardLeng.length();

                DateFormat dateForm = new SimpleDateFormat("MMddyy-HHmmss");
                Date date = new Date();
                BufferedWriter reportLog = null;
                File reportFile = new File("ResetLog.txt");

                if (cardLenP == 19) {

                    // execute select query to identify the cust_id of the
                    // input
                    // card number.
                    String sql = getThisProperty("sql.select");
                    PreparedStatement stmt = connection.prepareStatement(sql);
                    stmt.setString(1, cardLeng);
                    ResultSet rs = stmt.executeQuery();
                    rs.next();
                    Integer custID = new Integer(rs.getInt("issue_cust_id"));

                    // execute delete in financial_txn table for resp_cd 52,
                    // 82
                    // and 59.
                    String sqldel = getThisProperty("sql.delete");
                    PreparedStatement stmtdel = connection
                            .prepareStatement(sqldel);
                    stmtdel.setInt(1, custID);
                    stmtdel.executeUpdate();

                    // execute update to make customer account to be Active.
                    String sqlupdateacct = getThisProperty("sql.updateacctactive");
                    PreparedStatement stmtacctactive = connection
                            .prepareStatement(sqlupdateacct);
                    stmtacctactive.setInt(1, custID);
                    stmtacctactive.executeUpdate();

                    // execute update to make the cust_pymt_opt status to be
                    // Pending DL Required.
                    String sqlupdate = getThisProperty("sql.updatepending");
                    PreparedStatement stmtupdate = connection
                            .prepareStatement(sqlupdate);
                    stmtupdate.setInt(1, custID);
                    stmtupdate.executeUpdate();

                    // execute to delete velocity limit of the account.
                    String sqldelvel = getThisProperty("sql.deletevelo");
                    PreparedStatement stmtdelvel = connection
                            .prepareStatement(sqldelvel);
                    stmtdelvel.setInt(1, custID);
                    stmtdelvel.executeUpdate();

                    if (!reportFile.exists()) {
                        reportFile.createNewFile();
                    }
                    reportLog = new BufferedWriter(new FileWriter(reportFile
                            .getName(), true));
                    reportLog.write("Run Date/Time " + dateForm.format(date)
                            + " : Card # " + cardLeng
                            + " has been reset to be Pending DL Required.\r\n");
                    reportLog.flush();
                    reportLog.close();

                    frameLabel.setText(cardLeng
                            + " Have Been Reset To Pending DL Required");
                    cardTextField.setText(null);
                    connection.close();
                } else if (cardLenP == 10) {
                    // execute select query to identify the cust_id of the
                    // input
                    // card number.
                    String sql = getThisProperty("sql.CLselect");
                    PreparedStatement stmt = connection.prepareStatement(sql,
                            ResultSet.TYPE_SCROLL_INSENSITIVE,
                            ResultSet.CONCUR_READ_ONLY);
                    stmt.setString(1, "%" + cardLeng + "_");
                    ResultSet rs = stmt.executeQuery();
                    rs.next();

                    Integer custID = new Integer(rs.getInt("issue_cust_id"));

                    // execute delete in financial_txn table for resp_cd 52,
                    // 82
                    // and 59.
                    String sqldel = getThisProperty("sql.delete");
                    PreparedStatement stmtdel = connection
                            .prepareStatement(sqldel);
                    stmtdel.setInt(1, custID);
                    stmtdel.executeUpdate();

                    // execute update to make customer account to be Active.
                    String sqlupdateacct = getThisProperty("sql.updateacctactive");
                    PreparedStatement stmtacctactive = connection
                            .prepareStatement(sqlupdateacct);
                    stmtacctactive.setInt(1, custID);
                    stmtacctactive.executeUpdate();

                    // execute update to make the cust_pymt_opt status to be
                    // Pending DL Required.
                    String sqlupdate = getThisProperty("sql.updatepending");
                    PreparedStatement stmtupdate = connection
                            .prepareStatement(sqlupdate);
                    stmtupdate.setInt(1, custID);
                    stmtupdate.executeUpdate();

                    // execute to delete velocity limit of the account.
                    String sqldelvel = getThisProperty("sql.deletevelo");
                    PreparedStatement stmtdelvel = connection
                            .prepareStatement(sqldelvel);
                    stmtdelvel.setInt(1, custID);
                    stmtdelvel.executeUpdate();

                    if (!reportFile.exists()) {
                        reportFile.createNewFile();
                    }
                    reportLog = new BufferedWriter(new FileWriter(reportFile
                            .getName(), true));
                    reportLog.write("Run Date/Time " + dateForm.format(date)
                            + " : Cardless # " + cardLeng
                            + " has been reset to be Pending DL Required.\r\n");
                    reportLog.flush();
                    reportLog.close();

                    frameLabel.setText(cardLeng
                            + " Have Been Reset To Pending DL Required");
                    cardTextField.setText(null);
                    connection.close();
                } else if (cardLenP != 10 && cardLenP != 19) {
                    frameLabel.setText("Enter Valid Input");
                    cardTextField.requestFocusInWindow();
                }
                connection.close();
            } catch (ClassNotFoundException e) {
                frameLabel.setText("Java Class Error");
            } catch (SQLException e) {
                frameLabel.setText("No Result Found, Enter a Valid Account");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else if (a.getSource() == cardTextField) {
            cardTextField.setText("");
            frameLabel.setText("");
            cardTextField.requestFocusInWindow();
        }
    }

    // document to restrict cardTextField input.
    @SuppressWarnings("serial")
    public final class LengthRestrictedDocument extends PlainDocument {

        private final int limit;

        public LengthRestrictedDocument(int limit) {
            this.limit = limit;
        }

        public void insertString(int offs, String str,
                javax.swing.text.AttributeSet a) throws BadLocationException {
            if (str == null)
                return;

            if ((getLength() + str.length()) <= limit) {
                super.insertString(offs, str, a);
            }
        }
    }

    private String getThisProperty(String propKey) {
        Properties sqlQuery = new Properties();
        try {
            sqlQuery.load(new FileInputStream("sql.properties"));
        } catch (FileNotFoundException e) {
            System.out.println("File Not Found Error");
        } catch (IOException e) {
            System.out.println("IO Exception Error");
        }
        return sqlQuery.getProperty(propKey);
    }

    private static void launchGUI() throws ClassNotFoundException, SQLException {

        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("QA/DEV Reset Tool - Beta");

        AcctReset window = new AcctReset();
        frame.setContentPane(window.createContentPane());

        Image icon = Toolkit.getDefaultToolkit().getImage("img/gep.png");
        frame.setIconImage(icon);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 180);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setResizable(false);

    }

    // Connect To DEV DB
    @SuppressWarnings("unused")
    private static Connection getConnectionDEV() throws ClassNotFoundException,
            SQLException {
        Class.forName("driver");
        Connection connection = DriverManager.getConnection(
                "dev url", "username",
                "password");
        // frameLabel.setText("DB, connection obtained ");
        return connection;

    }

    // Connect To QA DB
    private static Connection getConnectionQA() throws ClassNotFoundException,
            SQLException {
        Class.forName("driver");
        Connection connection = DriverManager.getConnection(
                "qa url", "username",
                "password");
        return connection;

    }

    @SuppressWarnings("unused")
    private static ServerSocket SERVER_SOCKET;

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    SERVER_SOCKET = new ServerSocket(1354);
                    launchGUI();

                } catch (ClassNotFoundException e) {
                    frameLabel.setText("Java Class Error");
                } catch (SQLException e) {
                    frameLabel.setText("Cannot Connect To Server");
                } catch (IOException e) {
                    System.exit(1);
                    // JOptionPane.showMessageDialog(null,"DEV Reset Tool is already running.");
                }
            }
        });
    }
}

以上是我的代码,它正在运行。我的问题是我需要添加QA和DEV按钮,它们仍将使用当前的cardButtonResetA和cardButtonResetP按钮来进行QA和DEV环境。我会这样做吗?

另外,如果您对上述代码有更好的代码优化建议,那么非常受欢迎。

我只是java编程的新手。感谢。

1 个答案:

答案 0 :(得分:3)

问:

  

你想从另一个

调用/调用两个JButton吗?

A:

  

是的,当我选择QA或DEV按钮时,我将需要使用现有的   两个按钮,具有不同的重置选项。感谢。