java實現抽獎效果

先上圖,看看效果,
點擊run時設定的文字會一直隨機跳動,點擊stop停止,並顯示當前的文字
點擊run時設定的文字會一直隨機跳動,點擊stop停止,並顯示當前的文字

package com.diego.main.test;

import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class RandomName // implements extends Thread
        implements ActionListener, Runnable {
    // 設置一個標記
    private boolean flag = false;
    private JFrame randomFrame = new JFrame("隨機獲取名字");
    // 創建一個Panel對象。
    private JPanel randomPanel = new JPanel();
    private TextField tf = new TextField(30);
    private JButton randomButton1 = new JButton("Run");
    private JButton randomButton2 = new JButton("Stop");
    private String[] name = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven",
            "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };

    public RandomName() {
        // 向JPanel容器中添加三個組件
        randomPanel.add(tf);
        randomPanel.add(randomButton1);
        randomPanel.add(randomButton2);
        randomFrame.add(randomPanel);
        // 取得屏幕的寬度
        int width = Toolkit.getDefaultToolkit().getScreenSize().width;
        // 取得屏幕的高度
        int height = Toolkit.getDefaultToolkit().getScreenSize().height;
        // 設置組件不可改變大小
        randomFrame.setResizable(false);
        // 設置關閉窗體時結束程序
        randomFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 設置組件大小
        randomFrame.setSize(250, 120);
        // 設置組件位置
        randomFrame.setLocation((width - 250) / 2, (height - 120) / 2);
        // 設置組件大小和位置
        // randomFrame.setBounds(30, 30, 250, 120);
        // 設置組件可見
        randomFrame.setVisible(true);
        addListener();
    }

    private void addListener() {
        randomButton1.addActionListener(this);
        randomButton2.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        Object obj = e.getSource();
        if (obj == randomButton1) {
            synchronized (this) {
                notify();
                flag = true;
            }
        }
        if (obj == randomButton2) {
            synchronized (this) {
                flag = false;
            }
        }
    }

    public void run() {
        int length = name.length;
        while (true) {
            try {
                if (!flag) {
                    synchronized (this) {
                        this.wait();
                    }
                }
                Random myRandomName = new Random();
                int RN = myRandomName.nextInt(length);
                tf.setText(name[RN]);
                Thread.sleep(1);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        RandomName rn = new RandomName();
        Thread t1 = new Thread(rn);
        t1.start();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章