点名器的实现 前言:萌生想要做个点名器的想法是源于每天老师上课点名提问,作为一个即将成为程序员的的我决定用程序的方式试着去实现. 实现思路: 1. 由于点名的名单可能会改变,所以可以把名单写在配置文件里,程序通过I/O流知识读取配置文件. 2. 为了使得点名器的外观更好看一些,百度学习啦一些swing的知识,做成GUI格式,一个文本域显示姓名,两个控制按钮,控制开始点名和结束点名 3. 点名随机性的实现:程序读取配置文件里的信息后存储在List集合,遍历List集合时一次将姓名覆盖打印在文本域,通过控制按钮随机暂停显示姓名 程序流程: 代码实现: package com.itheima; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.WindowConstants; public class MyFrame extends JFrame { boolean isStart = true; public MyFrame() throws IOException { //读取student.properties配置信息 String path = System.getProperty("user.dir"); System.out.println(path); InputStream in = new BufferedInputStream(new FileInputStream(path+"\\student.properties")); Properties pro = new Properties(); pro.load(in); //给新建集合赋值 List<String> list = new ArrayList<String>(); int i = 0; while (true) { String name = pro.getProperty("name" + i); if (name == null) { break; } list.add(name); i++; } //创建GUI窗体 JFrame jf = new JFrame("测试"); Container container = jf.getContentPane(); container.setLayout(null); //创建文本区 JLabel jl = new JLabel(); jl.setBounds(10, 10, 100, 21); jl.setHorizontalAlignment(SwingConstants.CENTER); container.add(jl); //创建按钮 JButton bl = new JButton("开始"); bl.setBounds(130, 10, 80, 21); JButton b2 = new JButton("停止"); b2.setBounds(230, 10, 80, 21); //给按钮加监听 bl.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { isStart = true; System.out.println("开始按钮被监听啦"+isStart); System.runFinalization(); } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { isStart = false; System.out.println("结束按钮被监听啦"+isStart); } }); container.add(bl); container.add(b2); jf.setVisible(true); jf.setSize(350, 80); jf.setLocation(500, 300); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //给文本域赋值 int k = 0; int counttime = 0; while (true) { counttime++; if (counttime%1000000000==0) { System.out.println(isStart+"**"+k); } if(isStart){ jl.setText((String) list.get(k)); k++; if (k >= list.size()) { k = 0; } } } } } 主方法测试 package com.itheima; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { MyFrame myFrame = new MyFrame(); } } 感悟:从萌生这个想法到实现花了一天多的时间,中间遇到了不少问题,特别是处理监听的时候老是出问题,最后在陈君老师的帮助下解决啦.这个小程序用到啦集合,I/O流,while死循环,if判断语句,构造方法,Swing的部分知识.算是对这十多天学习的一个小总结,锻炼啦自己的思维和编程能力,也确实给了自己不少自信,我相信在以后的学习中只要不断的钻研,坚持进步,数月后一定可以找个好工作.加油!
|