首页 > 编程语言 >案例3:JAVA GUI 随机点名程序

案例3:JAVA GUI 随机点名程序

时间:2022-11-04 11:34:19浏览次数:44  
标签:java import GUI public add new 点名 JAVA

先开发一个姓名维护的界面,输入学生的姓名,每行录入一个学生姓名,点击保存的时候将学生的姓名保存到一个txt文件中。

再开发一个点名的程序,从维护好的txt文件中,随机读取一个学生的姓名显示出来,表示该学生已被点名。

1.维护名称

 

2.随机点名

 

 

3.源码 

CallNamePage.java

//GUI界面
package CallName;
import java.awt.Toolkit;
import java.awt.event.*;

import javax.swing.*;
//点名程序
public class CallNamePage extends JFrame {
	JTextField txt11 = new JTextField();
	JButton btn = new JButton("随机点名");
	JButton btn2 = new JButton("姓名维护");

	public CallNamePage() {
		super("标题");
		final JLabel lab = new JLabel("点名中....");
		lab.setBounds(120, 40, 120, 40);
		txt11.setBounds(120, 100, 120, 40);
		btn.setBounds(120, 160, 120, 40);
		btn2.setBounds(120, 210, 120, 40);
		//事件
		btn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ee) {
				lab.setText("新的幸运儿已经产生");
				CallNameTool tool  =new CallNameTool();
				try{
					txt11.setText(tool.DoCallName());
				}
				catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, "点名失败");
				}
			}
		});
		btn2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ee) {
				CallNameSetting st=new CallNameSetting();
				st.CenterPanel();
			}
		});

		// 将控件添加到容器
		JPanel p = new JPanel();
		p.setLayout(null);
		// 布局标题
		p.add(lab);
		p.add(txt11);
		p.add(btn);
		p.add(btn2);
		getContentPane().add(p);
		setSize(400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);

	}

	// 将界面开始位置显示到屏幕中间
	public void CenterPanel() {
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		this.setLocation(width / 2, height / 4);
	}

}

  

CallNameSetting.java

//游戏主界面
package CallName;
import java.awt.Toolkit;
import java.awt.event.*;

import javax.swing.*;

//点名设置界面
public class CallNameSetting extends JFrame {
	// 输入用户列表
	JLabel tip=new JLabel("提示:按每个姓名为一行进行维护。"); 
	JTextArea txt11=new JTextArea();
	// 功能按钮
	JButton btnSave = new JButton("保存设置");
	JButton btnBegin = new JButton("开始点名");

	public CallNameSetting() {
		super("点名设置");
		tip.setBounds(20, 10, 220, 20);
		txt11.setBounds(20, 40, 220, 200);

		btnSave.setBounds(20, 270, 100, 20);
		btnBegin.setBounds(150, 270, 100, 20);

		btnSave.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ee) {
				CallNameTool tool=new CallNameTool();
				try{
					tool.SaveCallName(txt11.getText());
					JOptionPane.showMessageDialog(null, "已保存!");
				}
				catch(Exception ex)
				{
					//
					JOptionPane.showMessageDialog(null, "保存失败");
				}
			}
		});
		
		btnBegin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ee) {
				CallNamePage cp=new CallNamePage();
				cp.CenterPanel();
			}
		});

		// 将控件添加到容器
		JPanel p = new JPanel();
		p.setLayout(null);
		p.add(tip);
		p.add(txt11);
		
		p.add(btnSave);
		p.add(btnBegin);
		
		getContentPane().add(p);
		setSize(300, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		//初始化姓名列表
		CallNameTool tool=new CallNameTool();
		try{
			String result=tool.GetCallName();
			txt11.setText(result);
		}
		catch(Exception ex)
		{
			//
			JOptionPane.showMessageDialog(null, "读取用户配置文件失败");
		}
		

	}

	// 程序入口
	public static void main(String[] args) {
		CallNameSetting s = new CallNameSetting();
		s.CenterPanel();
	}

	// 将界面开始位置显示到屏幕中间
	public void CenterPanel() {
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		this.setLocation(width / 2, height / 4);
	}
}

  

CallNameTool.java

package CallName;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
//实现点名功能
public class CallNameTool {
	//随机读取一个姓名
    public static String DoCallName() throws IOException {
        BufferedReader br=new BufferedReader(new FileReader("name.txt"));
        ArrayList<String> array=new ArrayList<>();
        String line;
        //读取文件内容到ArrayList
        while ((line= br.readLine())!=null){
            array.add(line);
            }
            br.close();
            //随机返回一个姓名
            Random r=new Random();
            int index = r.nextInt(array.size());
            String name = array.get(index);
            return name;
        }
    
    //读取所有姓名
    public static String GetCallName() throws IOException {
        BufferedReader br=new BufferedReader(new FileReader("name.txt"));
        String result="";
        String line;
        //读取文件内容到ArrayList
        while ((line= br.readLine())!=null){
        	result+=line+"\n";
            }
            br.close();
            return result;
        }
    
    //保存姓名
    public static void SaveCallName(String content) throws IOException {
    	String word = content;
        FileOutputStream fileOutputStream = null;
        File file = new File("name.txt");
        if(!file.exists()){
            file.createNewFile();
        }
        fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(word.getBytes("gbk"));
        fileOutputStream.flush();
        fileOutputStream.close();
    }
}

  

 

标签:java,import,GUI,public,add,new,点名,JAVA
From: https://www.cnblogs.com/soulsjie/p/16857174.html

相关文章

  • JavaIo案例
    FIleFIle是文件对象,可以表示一个文件,也可以表示文件夹。研究其源码,没有什么意义,我们要做的,是研究怎么用。常用的文件操作方式一:根据路径创建一个文件(只能创建在磁盘根......
  • Java学习——11.04
    因为昨天学的有点少,上不了台面,所以和今天的一起写,当然还可能是自己太懒了,昨天的没记住,于是又看了一遍。1.变量:局部变量(和C一样的)实例变量(加new引用文件名创建函数......
  • 十堰网站建设用php、java、.net哪个编程语言好
    前言对于这个问题,我的回答是:在十堰网站建设时没有什么编程语言是最好的,只有适合自己的才是最好的!或许你对我的回复不是很满意,不过没关系,你可以看看我的分析就知道了。Php......
  • 死磕面试系列,Java到底是值传递还是引用传递?
    Java到底是值传递还是引用传递?这虽然是一个老生常谈的问题,但是对于没有深入研究过这块,或者Java基础不牢的同学,还是很难回答得让人满意。可能很多同学能够很轻松的背出JVM......
  • Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验
    场景GuavaGuava项目是Google公司开源的Java核心库,它主要是包含一些在Java开发中经常使用到的功能,如数据校验、不可变集合、计数集合,集合增强操作、I/O、缓存、字......
  • JavaScript异或运算
    相关性质任何数和自己做异或运算,结果为0,即a⊕a=0a⊕a=0。任何数和0做异或运算,结果还是自己,即a⊕0=⊕a⊕0=⊕。异或运算中,满足交换律和结合律,也就是a⊕b⊕a=b⊕a⊕......
  • Java(screw)生成数据库表结构
    数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCacheDB(2016)文档生成支持htmlwordmarkdown方式一:代码生成<dependency><groupId>cn......
  • java.lang.StackOverflowError错误的解决方法
    对于java.lang.StackOverflowError认识如下图所示,报出来这种错误的话,很大概率是有以下几种原因:现在来看一看我的报错界面:不难看出,这是无限循环的那种情况,所以,我就去看......
  • Java四舍五入的常见方法(DecimalFormat 用法详解)
    对Java中DecimalFormat的所有基础用法进行了一个汇总。DecimalFormat类主要靠#和0两种占位符号来指定数字长度。0表示如果位数不足则以0填充,#表示只要有可能就......
  • Java函数式编程(1):Lambda表达式(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从之前的Lambda表达式的演变过程可以知道,Lambda表达式其实是一个对匿名内部类的简化过程:去掉了多余的语法修饰,只保留最......