?? chooseaward.java
字號:
//package youg;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class ChooseAward extends JFrame
{
/**
*
*/
//系統自動生成
private static final long serialVersionUID = 7510608124693852355L;
JButton b_start = new JButton("開始");
JButton b_stop = new JButton("停止");
JPanel p_north=new JPanel();
JPanel p_center=new JPanel();
JPanel p_south=new JPanel();
//菜單欄
JMenuBar menubar=new JMenuBar();
//菜單項
JMenu fileMenu=new JMenu("文件");
JMenu setMenu=new JMenu("設置");
JMenu aboutMenu=new JMenu("關于");
/*
* 菜單子項
*/
private JMenuItem[] filem={new JMenuItem("選擇文件"),new JMenuItem("另存為.."),
new JMenuItem("保存"),new JMenuItem("退出")
};
private JMenuItem[] filew={new JMenuItem("關于我們")};
JTextField t_identNumber = new JTextField(); // 身份證號的文本域
Vector v_identNumber = new Vector(); // 存放讀取出來的號碼
Vector v_name = new Vector(); // 存放讀取出來的人的姓名
Vector z_identNumber = new Vector(); // 存放號碼
Vector z_name = new Vector(); // 存放姓名
Vector v_printident = new Vector(); // 存放中獎人的身份證號碼
JLabel l_information = new JLabel();
JLabel l_identNumber = new JLabel();
JLabel l_sysinformation = new JLabel("系統信息:");
JFileChooser filechooser = new JFileChooser(); // 文件選擇器
//選擇隨機數的線成
public ChooseThread awardThread = null;
public static int level=1;
int chooseTime = 0; // 按下停止按鈕的次數,也就是抽獎的次數
public ChooseAward()
{
super("**抽獎系統");
t_identNumber.setEditable(false);
/*
* 1.4以后的JDK可以不用Container
*/
Container contentPane = getContentPane();
//BorderLayout布局管理器,東,南,西,北
contentPane.setLayout(new BorderLayout());
/*
* 給幾個按鈕和子菜單添加監聽器
*/
filem[0].addActionListener(new ActionListener()
{
// 注冊加載事件的監聽器
public void actionPerformed(ActionEvent e)
{
b_loadident_ActionPerformed(e);
}
});
b_start.addActionListener(new ActionListener()
{
// 注冊開始事件的監聽器
public void actionPerformed(ActionEvent e)
{
b_start_ActionPerformed(e);
}
});
b_stop.addActionListener(new ActionListener()
{ // 注冊停止事件的監聽器
public void actionPerformed(ActionEvent e)
{
b_stop_ActionPerformed(e);
}
});
filem[2].addActionListener(new ActionListener()
{ // 注冊打印事件的監聽器
public void actionPerformed(ActionEvent e)
{
b_printaward_ActionPerformed(e);
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//加入相關信息
filew[0].addActionListener(new ActionListener()
{
// 注冊加載事件的監聽器
public void actionPerformed(ActionEvent e)
{
about_loadident_ActionPerformed(e);
}
});
//將菜單子項加入菜單中
for(int i=0;i<filem.length;i++)
{
fileMenu.add(filem[i]);
//加入分隔線,為了美觀
fileMenu.addSeparator();
}
for(int i=0;i<filew.length;i++)
{
aboutMenu.add(filew[i]);
//加入分隔線,為了美觀
//aboutMenu.addSeparator();
}
//將菜單條加入frame中
menubar.add(fileMenu);
menubar.add(setMenu);
menubar.add(aboutMenu);
setJMenuBar(menubar);
/*將p_north設計為一個狀態欄,顯示一些操作過程中的信息
* 創建一個左對齊方式的流布局
*/
p_south.setLayout(new FlowLayout(FlowLayout.LEFT));
l_information.setForeground(Color.blue);
p_south.add(l_sysinformation);
p_south.add(l_information);
contentPane.add(p_south,BorderLayout.SOUTH);
/*
* 設置的一些顯示方式,字體,大小等,為了盡量美觀一點
*/
Font xuehao=new Font("null",Font.PLAIN,30);
l_identNumber.setFont(xuehao);
//字體的居中對齊
l_identNumber.setHorizontalAlignment(0);
l_identNumber.setText("手機號");
Font number=new Font("null",Font.BOLD,30);//粗體
t_identNumber.setFont(number);
//設置字體顏色
t_identNumber.setForeground(Color.red);
t_identNumber.setHorizontalAlignment(0);
//給上面的jpanel設置布局
p_north.setLayout(new GridLayout(2,1));
p_north.add(l_identNumber);
p_north.add(t_identNumber);
contentPane.add(p_north,BorderLayout.NORTH);
//給中間的jpanel 設置布局
p_center.setLayout(new GridLayout(1,2,10,0));
p_center.add(b_start);
p_center.add(b_stop);
contentPane.add(p_center,BorderLayout.CENTER);
}
/*
* 加載按鈕事件方法
*/
public void b_loadident_ActionPerformed(ActionEvent e)
{
int k = 0;
chooseTime = 0;
//從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取
BufferedReader reader = null;
//此方法會返回一個int值
int i = filechooser.showOpenDialog(this); // 顯示打開文件對話框
/*
* 確實所選擇的是對話框上的確定按鈕
*/
if (i == JFileChooser.APPROVE_OPTION)
{ // 點擊對話框中打開選項
File f = filechooser.getSelectedFile(); // 得到所選擇的文件
try
{
l_information.setText("數據加載中,請稍等...");
//讀取字符流
reader = new BufferedReader(new FileReader(f));
//循環讀取
while (true)
{
//讀取一個文本行
String data = reader.readLine();
System.out.println(data);//開發時候測試用
// 讀完了數據
if (data == null)
{
l_information.setText("數據加載完成!");
break;
}
//通過“-”這個符號將 字符串分離為兩部分,再存放到向量里面
Vector v = this.apart(data, "-");
//System.out.println(data);//開發時候測試用
if (v == null)
{
l_information.setText("數據格式不正確,請重新加載!");
return;
}
/*
* 分別將分離開來的手機號碼,和姓名分別放入兩個可變向量當中
* 這里應該使用泛型,由于本人還沒有熟練掌握泛型,姑且放之
*
*
* 捕獲異常,看是否出現了格式錯誤,因為一般出現了格式錯誤
* 這兩條語句都會發生無法取得元素的錯誤
*/
try
{
v_identNumber.add(k, v.elementAt(0));
v_name.add(k, v.elementAt(1));
k++;
}
catch(Exception e4)
{
System.out.println("格式中沒有分隔符號出現的錯誤");
//JOptionPane.showMessageDialog(this, "導入的數據格式錯誤!");
l_information.setText("導入的數據格式錯誤!");
break;
}
}
} catch (Exception ex)
{
ex.printStackTrace(); // 輸出出錯信息
}
}
}
/*
* 加載關于按鈕的事件
*/
public void about_loadident_ActionPerformed(ActionEvent e)
{
int k = 0;
chooseTime = 0;
//從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取
BufferedReader reader = null;
//此方法會返回一個int值
int i = filechooser.showOpenDialog(this); // 顯示打開文件對話框
/*
* 確實所選擇的是對話框上的確定按鈕
*/
if (i == JFileChooser.APPROVE_OPTION)
{ // 點擊對話框中打開選項
File f = filechooser.getSelectedFile(); // 得到所選擇的文件
try
{
l_information.setText("數據加載中,請稍等...");
//讀取字符流
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -