案例3:JAVA GUI 随机点名程序
先开发一个姓名维护的界面,输入学生的姓名,每行录入一个学生姓名,点击保存的时候将学生的姓名保存到一个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();
}
}

浙公网安备 33010602011771号