package cn.OrderNameMachine;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
/**
* 随机点名
* extends 继承 , RollName类也表示窗口类 《==RollName继承JFrame,JFrame是一个窗口类,则RollName也是一个窗口类
*/
public class RollName extends JFrame{
//定义一个数组
static String[] names={
"张三","李四","王五","阿衰","樱花","关羽","刘备","张飞"};
//生成随机数字 先new一个Random对象
static Random random=new Random();
//TODO 1 创建一个显示器展示文字
static JLabel label=new JLabel();
public static void main(String[] args) {
//先编写第一个版本(不去读txt文档),定义一个字符串的数组,放入名字
//随机点名 ,需求:数组中随机获取名字 --》》完成需求
// String name=getName();
// System.out.println("姓名:"+name);
//TODO.1.1 展示窗口 Java的GUI程序,先创建窗口
//创建窗口对象 ctrl+p 查看构造方法的参数
// JFrame frame=new JFrame("Pash点名器");
JFrame frame=new RollName();
//设置窗口大小 ,调用的都是父类的方法
frame.setSize(600,600);
//设置布局,null 清楚布局,任意摆放
frame.setLayout(null);
label.setBounds(270,150,250,50);
//给显示器设置一些内容
label.setText("hello!");
//显示求存放到窗口
frame.add(label);
//搞个按钮
JButton button=new JButton("点名");
button.setBounds(240,450,80,40);
//按钮时可以点击的 给按钮添加一个点击的事件 addMouseListener添加鼠标监听
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// System.out.println("按钮被点击了");
//调用一个方法
((RollName) frame).gogo();
}
});
//按钮放置到窗口
frame.add(button);
//显示窗口
frame.setVisible(true);
}
//计数器
static int num=0;
/**
* 点名
* 需求:
*/
public void gogo(){
//开启新线程
Thread t=new Thread(new Runnable() {
@Override
public void run() {
//死循环
while (true){
System.out.println("gogo,lat M M");
//把index的值变成随机值 生成随机数字,范围0~int(names.length)-1 通过索引来的
int index = random.nextInt(names.length);
//从数组中获取内容
String name=names[index];
label.setText(name);
//让num累加
num++;
//判断,说明已经循环了10次
if(num==10){
//把num的值恢复成0
num=0;
break;
}
try {
//休眠
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
//启动线程
t.start();
}
/**
* 随机获取名字
* @return
*/
public static String getName2() {
//把index的值变成随机值 生成随机数字,范围0~int(names.length)-1 通过索引来的
int index = random.nextInt(names.length);
//从数组中获取内容
String name=names[index];
return name;
}
}