⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lotterywindow.java

📁 抽奖系统。营销活动现场
💻 JAVA
字号:
//LotteryWindow.javapackage com.cy;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.math.*;public class LotteryWindow extends JWindow {  JPanel jPanel1 = new JPanel();  JLabel lbLottery = new JLabel();  JToggleButton tgbtDraw = new JToggleButton();  JButton btExit = new JButton();  JButton btExit1 = new JButton();  JButton btExit2 = new JButton();  JToggleButton tgbtDraw1 = new JToggleButton();  JPanel jPanel2 = new JPanel();  JPanel jPanel3 = new JPanel();  BorderLayout borderLayout1 = new BorderLayout();  BorderLayout borderLayout2 = new BorderLayout();  JPanel jPanel4 = new JPanel();  JLabel lbRound = new JLabel();  JLabel lbUser = new JLabel();  JLabel jLabel1 = new JLabel();  int currentAward=0;  int currentAwardUser=0;  boolean isLotteryProcessEnd = false;  boolean isReturnNow = false;  DrawLots lotsObj;  Raffle raffleObj;  MainFrame mainFrame;  public LotteryWindow(DrawLots lots) {    try {      lotsObj = lots;      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  private void jbInit() throws Exception {    lbLottery.setFont(new java.awt.Font("Dialog", 0, 200));    lbLottery.setForeground(new Color(255, 79, 0));    lbLottery.setHorizontalAlignment(SwingConstants.CENTER);    lbLottery.setText("Ready");    jPanel1.setLayout(borderLayout1);    tgbtDraw.setText("Start");    tgbtDraw.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        tgbtDraw_actionPerformed(e);      }    });    btExit.setText("Exit");    btExit.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        btExit_actionPerformed(e);      }    });    jPanel2.setLayout(borderLayout2);    jPanel3.setPreferredSize(new Dimension(125, 55));    lbUser.setText("User "+ currentAwardUser);    lbUser.setFont(new java.awt.Font("Dialog", 0, 30));    lbUser.setToolTipText("");    lbRound.setFont(new java.awt.Font("Dialog", 0, 30));    lbRound.setText("Award "+(AppState.roundCount.length-currentAward));    jLabel1.setText("              ");    jPanel4.add(lbRound, null);    jPanel4.add(lbUser, null);    this.getContentPane().add(jPanel1, BorderLayout.CENTER);    jPanel1.add(jPanel2, BorderLayout.CENTER);    jPanel2.add(lbLottery, BorderLayout.CENTER);    jPanel1.add(jPanel3, BorderLayout.SOUTH);    jPanel3.add(tgbtDraw, null);    jPanel3.add(btExit, null);    jPanel1.add(jPanel4, BorderLayout.NORTH);    jPanel4.add(jLabel1, null);    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();    setSize(screenSize);    raffleObj = new Raffle();    raffleObj.lotteryObj = lotsObj;    raffleObj.setLabel(lbLottery);  }  /**   * 抽奖按钮被按下后,需要按照状态启停抽奖过程   */  void tgbtDraw_actionPerformed(ActionEvent e) {    if (tgbtDraw.isSelected()){      startRaffle();      lbUser.setText("User: "+(lotsObj.getCurrentRoundUser()+1));      lbRound.setText("Award "+(AppState.roundCount.length-lotsObj.currentRound));      tgbtDraw.setText("Stop");    }else{      tgbtDraw.setText("Start");      // how to let stepToNextDraw()      stopRaffle();      raffleObj.lotteryObj.draw(raffleObj.random);      if (lotsObj.stepToNextDraw()==false){        tgbtDraw.setEnabled(false);        raffleEnd();      }    }  }  /**   * 退出按钮被选择时候,询问是否本次抽奖结果有效   */  void btExit_actionPerformed(ActionEvent e) {    if (tgbtDraw.isSelected()==true){      return;    }    if (this.isLotteryProcessEnd==false){      int result = JOptionPane.showConfirmDialog(        this,        "Suffle is not end, are you really want to exit ?",        "Confirm to exit",        JOptionPane.OK_CANCEL_OPTION);      if (result == JOptionPane.CANCEL_OPTION) {        return;      }    }else{      int result = JOptionPane.showConfirmDialog(      this,      "Suffle is ended, save the result ?",      "Warning",      JOptionPane.OK_CANCEL_OPTION);      if (result == JOptionPane.OK_OPTION) {        saveSuffleResult();      }    }    dispose();  }  /**   * 所有的奖项都已经决出   */  public void raffleEnd(){    isLotteryProcessEnd = true;    JOptionPane.showMessageDialog(this,"All awards are drawed");  }  /**   * 将抽奖结果放入AppState类中的幸运用户集合中   */  void saveSuffleResult(){    int[][] userArray = lotsObj.getLuckyUserArray();    for (int i = 0; i<userArray.length;i ++){      for (int j = 0; j<userArray[i].length;j++){        UserInfo userInfo = (UserInfo)AppState.userList.elementAt(userArray[i][j]);        LuckyUserInfo luckyUserInfo = new LuckyUserInfo(userInfo,userArray.length-i);        AppState.luckyUserList.add(luckyUserInfo);      }    }    AppState.mainFrame.resetLuckyUserTable();  }  /**   * 开始摇奖,通过启动线程来进行后台编号的滚动   */  public void startRaffle(){    raffleObj.isRunning=true;    raffleObj.start();  }  /**   * 停止摇奖,暂停摇奖过程   */  public void stopRaffle(){    raffleObj.pause();    while(raffleObj.isRunning);  }  /**   * 抽奖线程类   */  class Raffle implements Runnable{    DrawLots lotteryObj;    JLabel label;    int random = 0;    boolean isRunning = true;    void setLabel(JLabel lb){      label = lb;    }    void setLotteryObj(DrawLots obj){      lotteryObj = obj;    }    void pause(){      isRunning = false;    }    /**     * 为用户界面显示不断滚动的数字。     */    public void run(){      int sn = 0;      String name;      while (isRunning){        random = lotteryObj.getRandomNumber();        sn = lotteryObj.getUserSN(random);        name =lotteryObj.getUserName(random);        label.setText(sn+"");        try {          Thread.sleep(50);        }        catch (Exception ex) {          ex.printStackTrace();        }      }//      think it over , why not can put the draw() method here , it will couse some thread problem//      lotteryObj.draw(random);    }    public void start(){      Thread thread=new Thread(this);      thread.start();    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -