第一次自己写的一个java的小东西,毕竟自己第一次写的,其中可谓是历经艰难,最后总结下来就是java实在是不适合写界面化的东西代码量比较大,这还不是最关键的,最关键的是控件的位置实在是太难控制了。
这是第一个界面的时候对于一些信息的保存
package pack;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.IOException;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import org.apache.commons.io.FileUtils;
import com.sun.org.apache.xpath.internal.FoundIndex;
import com.sun.swing.internal.plaf.basic.resources.basic;
public class Jiemian extends JFrame implements ActionListener {
String sex;// /保存性别
JTextField txt1 = new JTextField(25);
JTextField txt2 = new JTextField(25);
// JComboBox jc = new JComboBox();
JRadioButton b1 = new JRadioButton(" 男 ");
JRadioButton b2 = new JRadioButton(" 女 ");
JTextField txt4 = new JTextField(25);
JTextField txt5 = new JTextField(25);
JTextField txt6 = new JTextField(25);
JTextField txt7 = new JTextField(25);
JButton cancel = new JButton("清空");
JButton save = new JButton("保存");
JButton jB = new JButton("抽奖");
Jiemian() {
sex = "男";
// TODO Auto-generated method stub
setTitle("学生信息录入");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(10, 1));
// 面板1上的信息
JLabel label = new JLabel("欢迎录入学生信息");
label.setFont(new Font("", Font.BOLD, 25));
Panel panel1 = new Panel();
panel1.add(label);
add(panel1);
// 面板2上的信息
Panel panel2 = new Panel();
JLabel label1 = new JLabel("学 号:");
label1.setFont(new Font("", Font.BOLD, 15));
panel2.add(label1);
panel2.add(txt1);
add(panel2);
// 面板3上的信息
Panel panel3 = new Panel();
JLabel label2 = new JLabel("姓 名:");
label2.setFont(new Font("", Font.BOLD, 15));
panel3.add(label2);
panel3.add(txt2);
add(panel3);
// 面板4上的信息
Panel panel4 = new Panel();
JLabel label3 = new JLabel("性 别:");
label3.setFont(new Font("", Font.BOLD, 15));
JLabel l1 = new JLabel(
" ");
// /jc.addItem(" 男 ");
// jc.addItem(" 女 ");
panel4.add(label3);
ButtonGroup bg = new ButtonGroup();// /单选按钮必须放到ButtonGroup中caikeyong
bg.add(b1);
bg.add(b2);
panel4.add(b1);
panel4.add(b2);
// panel4.add(jc);
panel4.add(l1);
add(panel4);
b1.setSelected(true);// /最开始的时候应该选择性别男
// 面板5上的信息
Panel panel5 = new Panel();
JLabel label4 = new JLabel("宿舍号:");
label4.setFont(new Font("", Font.BOLD, 15));
panel5.add(label4);
panel5.add(txt4);
add(panel5);
// 面板6上的信息
Panel panel6 = new Panel();
JLabel label5 = new JLabel("班 级:");
label5.setFont(new Font("", Font.BOLD, 15));
panel6.add(label5);
panel6.add(txt5);
add(panel6);
// 面板7上的信息
Panel panel7 = new Panel();
JLabel label6 = new JLabel("手机号:");
label6.setFont(new Font("", Font.BOLD, 15));
panel7.add(label6);
panel7.add(txt6);
add(panel7);
// 面板8上的信息
Panel panel8 = new Panel();
JLabel label7 = new JLabel("籍 贯:");
label7.setFont(new Font("", Font.BOLD, 15));
panel8.add(label7);
panel8.add(txt7);
add(panel8);
// 面板9上的信息
Panel panel9 = new Panel();
JLabel l2 = new JLabel(" ");
panel9.add(cancel);
panel9.add(l2);
panel9.add(save);
add(panel9);
// 按钮添加监听
cancel.addActionListener(this);
save.addActionListener(this);
jB.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
// 面板10上的信息
Panel panel0 = new Panel();
panel0.add(jB);
add(panel0);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == cancel)// /选择的为清空地话,就清空所有的信息
{
clear();
} else if (e.getSource() == save)// 为保存的话,就保存到文本文档
{
save1();
JOptionPane.showMessageDialog(null, "保存信息成功!");
} else if (e.getSource() == jB) {
new Choose();
} else {
sex = e.getActionCommand().trim();// /保存到选中的信息
}
}
public void clear()// /清空
{
txt1.setText("");
txt2.setText("");
// jc.setSelectedIndex(0);
b1.setSelected(true);
txt4.setText("");
txt5.setText("");
txt6.setText("");
txt7.setText("");
}
public void save1()// 保存
{
String str;
str = txt1.getText();
str += "@" + txt2.getText();
// str+="@"+ jc.getSelectedItem().toString().trim();
str += "@" + sex;
str += "@" + txt4.getText();
str += "@" + txt5.getText();
str += "@" + txt6.getText();
str += "@" + txt7.getText();
FileUtils fileUtils = new FileUtils();
File file = new File("./1.txt");
try {
fileUtils.write(file, str + "\r\n", true);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Jiemian();
}
}
第二个界面的时候相当于是那个随机读取出文本文档中的某条信息
package pack;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import org.apache.commons.io.FileUtils;
public class Choose extends JFrame implements ActionListener {
JButton btn = new JButton("开始");//按按钮开始滚动产生随机中奖者姓名或者停止
JButton btn1 = new JButton("显示详细信息");//按动该按钮显示中奖者的详细信息
JTextField txt1 = new JTextField(10);
int flag = 0;//作为到底是该残生随机数还是停止的标志
List list=null;//一个集合,可以保存任何类型的数据
int num;
String []name=null;
//读出文本中的内容
public void du()
{
FileUtils fileUtils=new FileUtils();//定义一个文件操作类
try {
list=fileUtils.readLines(new File("./1.txt"));///将文件中的内容读出来,保存到List集合中
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//对于第2个界面的整个的控制
public Choose() {
// TODO Auto-generated constructor stub
setSize(300, 300);
setVisible(true);
setLayout(new GridLayout(3, 1));
//面板3,作用只是吧布局给弄得顺眼点
Panel panel3 = new Panel();
panel3.add(new JLabel(" "));
add(panel3);
// 面板1上的信息
Panel panel1 = new Panel();
JLabel label1 = new JLabel("中奖的同学为:");
label1.setFont(new Font("", Font.BOLD, 25));//label1的文本的字体设置
panel1.add(label1);
panel1.add(txt1);
txt1.setFont(new Font("", Font.BOLD, 15));///txt1的字体和文本的设置
panel1.add(btn);
add(panel1);
//给两个按钮添加监听
btn.addActionListener(this);
btn1.addActionListener(this);
btn1.setEnabled(false);///最开始的时候显示详细信息按钮不可用
//面板2上的信息
Panel panel2=new Panel();
panel2.add(btn1);
add(panel2);
du();///最开始的时候就将文件读出来,避免下面每次都得读一次
validate();
}
public static void main(String[] args) throws IOException {
new Choose();
}
Timer timer ;//设置时间监听
class Task extends TimerTask//监听时发生的事件
{
public void run() {
// TODO Auto-generated method stub
Random random =new Random();//随机数函数
num=random.nextInt(list.size());///使产生的随机数在信息条数内
name=list.get(num).toString().split("@");///用@符号将存入的信息分割开
txt1.setText(name[1]);///将名字存到文本框
//System.out.println("Hhhhhhhjhhhhh");
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == btn)
{
if (flag % 2 == 0) //单数次点击的话,现在开始滚动产生中奖者
{
btn.setText("停止");//按钮上的提示信息就该是停止了
flag++;
timer=new Timer();
timer.schedule(new Task(), 0,100);///任务的进行和时间间隔
btn1.setEnabled(false);///显示详细信息的控件依旧不可用
}
else
{
btn.setText("开始");///按钮上的提示文字改变为开始
flag++;
timer.cancel();///计时器结束
btn1.setEnabled(true);//显示详细信息的按钮可用
}
}
else
{
///弹出一个窗体显示具体的信息
String info="学 号:"+name[0]+"\n";
info+="姓 名:"+name[1]+"\n";
info+="性 别:"+name[2]+"\n";
info+="宿舍号:"+name[3]+"\n";
info+="班 级:"+name[4]+"\n";
info+="电 话:"+name[5]+"\n";
info+="籍 贯:"+name[6]+"\n";
JOptionPane.showMessageDialog(null,info );
}
}
}