Java小項目——抽獎系統


一、需求分析

面板:用於放置兩位抽獎號碼——號碼展示:1.數字 2.圖片

鼠標監聽器:按下鼠標,線程開始,開始號碼隨機滾動;釋放鼠標,判斷線程循環的值flag=0,號碼停止滾動,獲得中獎號碼。

線程:線程開始,繪制遮擋框,號碼number隨機生成,繪制號碼number,休眠0.1s(否則數字繪制過快,看不清楚)

二、系統實現

1、面板

package com.java7.choujiang0722;

import javax.swing.*;
import java.awt.*;

public class myFrame extends JFrame {
    //主程序入口
    public static void main(String args[]){
        System.out.println("抽獎");
        myFrame mf = new myFrame();
        mf.showUI();
    }
    //展示UI函數
    public void showUI(){
        this.setTitle("抽獎");
        this.setSize(600,600);
        this.setDefaultCloseOperation(3);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        //在JFrame組件上獲取畫筆
        Graphics g = this.getGraphics();
        //添加監聽器,鼠標按壓JFrame,開始抽獎;釋放,結束抽獎
        addMouseListener mouse = new addMouseListener(g);
        this.addMouseListener(mouse);
    }
}

2、鼠標監聽器

按下鼠標:線程開始

釋放鼠標:線程結束

package com.java7.choujiang0722;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class addMouseListener extends MouseAdapter {

    public Graphics g;
    private myThread tr ;
    //構造函數,創建鼠標監聽器時,將畫筆傳入addMouseListener
    public addMouseListener(Graphics g){
        this.g = g;
    }

    //鼠標按下,開始抽獎
    public void mousePressed(MouseEvent e) {
        System.out.println("開始抽獎");
        tr = new myThread(g);
        tr.start();
    }
    //鼠標釋放,停止抽獎
    public void mouseReleased(MouseEvent e) {
        System.out.println("停止抽獎");
        tr.flag = false;//public,公用,此處可以直接調用
    }
}

3、線程

package com.java7.choujiang0722;

import javax.swing.*;
import java.awt.*;

public class myThread extends Thread {

    private Graphics g;
    public boolean flag = true;
    //構造函數,創建線程時候,將畫筆傳入myThread
    public myThread(Graphics g){
        this.g = g;
    }
    ImageIcon icon;

    public void run() {
        while(flag){
            System.out.println("run : 抽獎中");
            //繪制抽獎數字
            g.setFont(new Font("宋體",Font.BOLD,100));
            g.setColor(Color.WHITE);
            g.fillRect(100,100,400,400);
            g.setColor(Color.RED);
            g.drawString("幸運抽獎",100,200);

            g.setColor(Color.CYAN);
            int number = (int)(Math.random()*10);
            g.drawString(number+"",240,330);
            //根據隨機生成數字,獲取0-9的圖片;繪制圖片
            icon = new ImageIcon(this.getClass().getResource(number+".png"));
            g.drawImage(icon.getImage(),150,200,120,200,null);

            number = (int)(Math.random()*10);
            g.drawString(number+"",300,330);
            icon = new ImageIcon(this.getClass().getResource(number+".png"));
            g.drawImage(icon.getImage(),350,200,120,200,null);
            try {
                sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        super.run();

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM