简单的抽卡模拟器2.0
生活随笔
收集整理的這篇文章主要介紹了
简单的抽卡模拟器2.0
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?登陸界面
?
?
package LoginView;import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;public class Login extends JFrame {JLabel title = new JLabel("抽卡模擬器");JLabel userName = new JLabel("登錄名");JTextField userText = new JTextField();JLabel pwLabel = new JLabel("登陸密碼");JPasswordField pwText = new JPasswordField();JButton loginBt = new JButton("登錄");JButton signInBt = new JButton("注冊");JButton resetBt = new JButton("重置");SpringLayout springLayout = new SpringLayout();JPanel centerJPanel = new JPanel(springLayout);SystemTray systemTray; //系統托盤TrayIcon trayIcon; //系統托盤圖標LoginHandler loginHandler; //事件處理器public Login() {super("抽卡模擬器");//定義和添加組件進容器setComponent();//設置布局layOutSet();//添加系統托盤addTray();Container container = getContentPane();container.add(centerJPanel);//設置loginBt為默認按鈕 getRootPane()為JFrame的根面板getRootPane().setDefaultButton(loginBt);Image image = new ImageIcon("IconImage/pika.png").getImage();setIconImage(image);setSize(600, 500);setDefaultCloseOperation(EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}/*添加系統托盤*/private void addTray() {//設置系統托盤if(SystemTray.isSupported()){systemTray = SystemTray.getSystemTray();trayIcon = new TrayIcon(new ImageIcon("IconImage/系統托盤圖片文件.png").getImage());//設置系統托盤圖標大小隨意變化trayIcon.setImageAutoSize(true);try {systemTray.add(trayIcon);}catch (AWTException e){e.printStackTrace();}//窗口事件監聽 最小化時銷毀資源this.addWindowListener(new WindowAdapter() {//窗口最小化@Overridepublic void windowIconified(WindowEvent e) {Login.this.dispose();}});//托盤鼠標事件監聽trayIcon.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {int click = e.getClickCount();if(click == 1){Login.this.setExtendedState(JFrame.NORMAL);}//重新開啟窗口Login.this.setVisible(true);}});}}/*設定組件相關屬性*/private void setComponent() {//登陸界面的事件處理器loginHandler = new LoginHandler(this);centerJPanel.add(title);centerJPanel.add(userName);centerJPanel.add(userText);centerJPanel.add(pwLabel);centerJPanel.add(pwText);//處理loginBt的事件centerJPanel.add(loginBt);loginBt.addActionListener(loginHandler);loginBt.addKeyListener(loginHandler);//處理signInBt的事件centerJPanel.add(signInBt);signInBt.addActionListener(loginHandler);//處理resetBt事件centerJPanel.add(resetBt);resetBt.addActionListener(loginHandler);//設置大小userText.setPreferredSize(new Dimension(150, 20));pwText.setPreferredSize(new Dimension(150, 20));loginBt.setPreferredSize(new Dimension(70, 30));signInBt.setPreferredSize(new Dimension(70, 30));resetBt.setPreferredSize(new Dimension(70, 30));//設置字體title.setFont(new Font("華文行楷",Font.BOLD,40));Font defaultFont = new Font("宋體",Font.PLAIN,15);userName.setFont(defaultFont);pwLabel.setFont(defaultFont);signInBt.setFont(defaultFont);loginBt.setFont(defaultFont);resetBt.setFont(defaultFont);}/*設定組件位置*/private void layOutSet() {//設定基準組件nameLabel位置Spring nameL_Width = Spring.width(userName);Spring nameLT_Width = Spring.width(userText);Spring sum = Spring.sum(Spring.sum(nameL_Width, nameLT_Width), Spring.constant(20));int gapX = sum.getValue() / 2;springLayout.putConstraint(SpringLayout.WEST, userName, -gapX, SpringLayout.HORIZONTAL_CENTER, centerJPanel);springLayout.putConstraint(SpringLayout.NORTH, userName, 100, SpringLayout.NORTH, centerJPanel);//titleint gapTitleX = Spring.width(title).getValue()/2;springLayout.putConstraint(SpringLayout.WEST, title, -gapTitleX, SpringLayout.HORIZONTAL_CENTER, centerJPanel);springLayout.putConstraint(SpringLayout.NORTH, title, 30, SpringLayout.NORTH, centerJPanel);//nameTextspringLayout.putConstraint(SpringLayout.WEST, userText, 15, SpringLayout.EAST, userName);springLayout.putConstraint(SpringLayout.SOUTH, userText, 0, SpringLayout.SOUTH, userName);//pwLabelspringLayout.putConstraint(SpringLayout.NORTH, pwLabel, 10, SpringLayout.SOUTH, userName);springLayout.putConstraint(SpringLayout.EAST, pwLabel, 0, SpringLayout.EAST, userName);//pwTextspringLayout.putConstraint(SpringLayout.WEST, pwText, 15, SpringLayout.EAST, pwLabel);springLayout.putConstraint(SpringLayout.SOUTH, pwText, 0, SpringLayout.SOUTH, pwLabel);//loginBtspringLayout.putConstraint(SpringLayout.NORTH, loginBt, 10, SpringLayout.SOUTH, pwText);springLayout.putConstraint(SpringLayout.WEST, loginBt, 0, SpringLayout.WEST, pwText);//signInBtspringLayout.putConstraint(SpringLayout.WEST, signInBt, 15, SpringLayout.EAST, loginBt);springLayout.putConstraint(SpringLayout.SOUTH, signInBt, 0, SpringLayout.SOUTH, loginBt);//resetBtspringLayout.putConstraint(SpringLayout.WEST, resetBt, 15, SpringLayout.EAST, signInBt);springLayout.putConstraint(SpringLayout.SOUTH, resetBt, 0, SpringLayout.SOUTH, signInBt);}public JTextField getUserText() {return userText;}public JPasswordField getPwText() {return pwText;}public static void main(String[] args) {new Login();} }登陸界面事件處理
package LoginView;import JDBCUtils.JDBCUtils;import javax.swing.*; import java.awt.event.*; import java.sql.*; import MainView.*;/*用于處理login界面的問題*/public class LoginHandler extends KeyAdapter implements ActionListener{Login login;public LoginHandler(Login login) {this.login = login;}/*按鈕事件處理*/@Overridepublic void actionPerformed(ActionEvent e) {JButton jButton = (JButton) e.getSource();String text = jButton.getText();//登錄事件if(text.equals("登錄")){switch (loginTest()){case 0:JOptionPane.showMessageDialog(login,"請輸入賬號");break;case 1:JOptionPane.showMessageDialog(login,"請輸入密碼");break;case 2:JOptionPane.showMessageDialog(login,"賬號不存在");break;case 3:new MainView(login.userText.getText());login.dispose();break;case 4:JOptionPane.showMessageDialog(login,"密碼錯誤");break;}//注冊事件}else if (text.equals("注冊")) {switch (signIn()){case 0:JOptionPane.showMessageDialog(login,"注冊失敗,賬號或密碼不得為空");break;case 1:JOptionPane.showMessageDialog(login,"注冊成功");break;case 2:JOptionPane.showMessageDialog(login,"賬號已存在");break;}//重置事件}else if (text.equals("重置")) {login.getUserText().setText("");login.getPwText().setText("");}}/*鍵盤事件處理*/@Overridepublic void keyPressed(KeyEvent e) {if(KeyEvent.VK_ENTER == e.getKeyCode()){switch (loginTest()){case 0:JOptionPane.showMessageDialog(login,"請輸入賬號");break;case 1:JOptionPane.showMessageDialog(login,"請輸入密碼");break;case 2:JOptionPane.showMessageDialog(login,"賬號不存在");break;case 3:new MainView(login.userText.getText());login.dispose();break;case 4:JOptionPane.showMessageDialog(login,"密碼錯誤");break;}}}/*登陸賬號*/private int loginTest(){String user = login.getUserText().getText();String password = new String(login.getPwText().getPassword());Connection dbConn = null;PreparedStatement pst1 = null;PreparedStatement pst2 = null;ResultSet resultSet1 = null;ResultSet resultSet2 = null;//賬號密碼不能為空if (user.length() == 0) {return 0;} else if (password.length() == 0) {return 1;}try {dbConn = JDBCUtils.getConnection();String sql1 = "SELECT * FROM userList WHERE username = ? AND password = ?";String sql2 = "SELECT * FROM userList WHERE username = ? ";pst1 = dbConn.prepareStatement(sql1);pst2 = dbConn.prepareStatement(sql2);pst1.setString(1,user);pst1.setString(2,password);pst2.setString(1,user);resultSet1 = pst1.executeQuery();resultSet2 = pst2.executeQuery();//判斷賬號是否正確if(!resultSet2.next()){return 2;}//判斷賬號是否登陸成功if(resultSet1.next()){return 3;}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JDBCUtils.close(resultSet1,pst1,dbConn);JDBCUtils.close(pst2);JDBCUtils.close(resultSet2);}return 4;}/*注冊賬號*/private int signIn(){Connection dbConn = null;Statement st = null;ResultSet rs = null;try {dbConn = JDBCUtils.getConnection();String username = login.getUserText().getText();String pwd = new String(login.getPwText().getPassword());//賬號密碼不能為空if (username.length() == 0 || pwd.length() == 0) {return 0;}st = dbConn.createStatement();String sql1 = "INSERT INTO userList VALUES('"+username+"','"+pwd+"')";String sql2 = "SELECT * FROM userList WHERE username = '"+username+"'";String sql3 = "INSERT INTO userCount VALUES('"+username+"',1,1,1)";//判斷賬號是否存在rs = st.executeQuery(sql2);if(rs.next())return 2;//創建賬號int a = st.executeUpdate(sql1);st.execute(sql3);return a;} catch (SQLException throwables) {throwables.printStackTrace();}finally {JDBCUtils.close(rs,st,dbConn);}return 0;}}主頁面
?
package MainView;import JDBCUtils.JDBCUtils;import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector;public class MainView extends JFrame {String user;SystemTray systemTray;TrayIcon trayIcon;JButton tenPick = new JButton("十連抽");JButton singlePick = new JButton("單抽");JButton pickDetail = new JButton("抽卡統計");JButton changeUser = new JButton("更換用戶");SpringLayout springLayout = new SpringLayout();JPanel northPanel = new JPanel(springLayout);DataModel dataModel;JTable jTable;JScrollPane jScrollPane;public MainView(String user){super("抽卡模擬器");this.user = user;addTray();setComponent();setComponentLocation();Container container = getContentPane();container.add(northPanel);setSize(new Dimension(600,500));setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);Image image = new ImageIcon("IconImage/llll.jpg").getImage();setIconImage(image);setVisible(true);}private void addTray(){if(SystemTray.isSupported()){systemTray = SystemTray.getSystemTray();trayIcon = new TrayIcon(new ImageIcon("IconImage/llll.jpg").getImage());trayIcon.setImageAutoSize(true);try{systemTray.add(trayIcon);}catch(AWTException e){e.printStackTrace();}this.addWindowListener(new WindowAdapter() {@Overridepublic void windowIconified(WindowEvent e) {MainView.this.dispose();}});trayIcon.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if(e.getClickCount() ==1 ){MainView.this.setExtendedState(JFrame.NORMAL);}MainView.this.setVisible(true);}});}}private void setComponent(){MainViewHandler mainViewHandler = new MainViewHandler(this);//設置按鈕事件處理tenPick.addActionListener(mainViewHandler);singlePick.addActionListener(mainViewHandler);pickDetail.addActionListener(mainViewHandler);changeUser.addActionListener(mainViewHandler);//按鈕大小Dimension dimension = new Dimension(100,30);tenPick.setPreferredSize(dimension);singlePick.setPreferredSize(dimension);pickDetail.setPreferredSize(dimension);changeUser.setPreferredSize(dimension);//按鈕長啥樣Font defaultFont = new Font("宋體",Font.PLAIN,15);tenPick.setFont(defaultFont);singlePick.setFont(defaultFont);pickDetail.setFont(defaultFont);changeUser.setFont(defaultFont);//設置表格dataModel = DataModel.assembleModel(setData());jTable = new JTable(dataModel);jScrollPane = new JScrollPane(jTable);//添加組件northPanel.add(jScrollPane);northPanel.add(tenPick);northPanel.add(singlePick);northPanel.add(pickDetail);northPanel.add(changeUser);}private void setComponentLocation(){Spring tenPick_Height = Spring.height(tenPick);int gapY = tenPick_Height.getValue()/2;springLayout.putConstraint(SpringLayout.EAST,tenPick,-7,SpringLayout.HORIZONTAL_CENTER,northPanel);springLayout.putConstraint(SpringLayout.NORTH,tenPick,gapY,SpringLayout.NORTH,northPanel);springLayout.putConstraint(SpringLayout.EAST,singlePick,-14,SpringLayout.WEST,tenPick);springLayout.putConstraint(SpringLayout.NORTH,singlePick,0,SpringLayout.NORTH,tenPick);springLayout.putConstraint(SpringLayout.WEST,pickDetail,14,SpringLayout.EAST,tenPick);springLayout.putConstraint(SpringLayout.NORTH,pickDetail,0,SpringLayout.NORTH,tenPick);springLayout.putConstraint(SpringLayout.WEST,changeUser,14,SpringLayout.EAST,pickDetail);springLayout.putConstraint(SpringLayout.NORTH,changeUser,0,SpringLayout.NORTH,pickDetail);springLayout.putConstraint(SpringLayout.WEST,jScrollPane,0,SpringLayout.WEST,northPanel);springLayout.putConstraint(SpringLayout.EAST,jScrollPane,0,SpringLayout.EAST,northPanel);springLayout.putConstraint(SpringLayout.SOUTH,jScrollPane,0,SpringLayout.SOUTH,northPanel);springLayout.putConstraint(SpringLayout.NORTH,jScrollPane,15,SpringLayout.SOUTH,tenPick);}public static void main(String[] args) {}private Vector setData(){ResultSet rs = null;PreparedStatement pst = null;Connection dbConn = null;try{Vector<Vector<Object>> data = new Vector<>();dbConn = JDBCUtils.getConnection();String sql = "SELECT quality,itemName FROM pickRecord WHERE userName = ?";pst = dbConn.prepareStatement(sql);pst.setString(1,user);rs = pst.executeQuery();while(rs.next()){Vector<Object> row = new Vector<>();row.addElement(rs.getString("quality"));row.addElement((rs.getString("itemName")));data.addElement(row);}return data;}catch (SQLException e){e.printStackTrace();}finally {JDBCUtils.close(rs,pst,dbConn);}return null;}public String getUser(){return user;}}class DataModel extends DefaultTableModel{static Vector<String> column;private static DataModel dataModel = new DataModel();static{column = new Vector<>();column.addElement("品質");column.addElement("名稱");}public static DataModel assembleModel(Vector<Vector<Object>> data){dataModel.setDataVector(data,column);return dataModel;}@Overridepublic boolean isCellEditable(int row, int column) {return false;} }主頁面事件處理
package MainView;import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import LoginView.*; import Raffle.*;public class MainViewHandler implements ActionListener {MainView mainView;MainViewHandler(MainView mainView){this.mainView = mainView;}@Overridepublic void actionPerformed(ActionEvent e) {JButton jButton = (JButton) e.getSource();String text = jButton.getText();if(text.equals("十連抽")){int count = 10;while (count-- > 0){singlePick();}new MainView(mainView.user);mainView.dispose();}else if(text.equals("單抽")){singlePick();new MainView(mainView.user);mainView.dispose();}else if(text.equals("抽卡統計")){}else{new Login();mainView.dispose();}}private void singlePick(){new Raffle(mainView.user).getAnswer();} }再抽一次
?艸
總結
以上是生活随笔為你收集整理的简单的抽卡模拟器2.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MPP数据库分区表详解
- 下一篇: 【RDM6300】 ID读卡模块