第一次自己写的一个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 );
}
}
}

第一个java的小东西的更多相关文章

  1. 一个Java线程小例子(仿火车票售卖)

    public class MyThread extends Thread{ private static int ticket=100; public void run(){ for(int i=0; ...

  2. 一个Java的小问题

    老师今天在讨论群里抛出了一个问题,让大家尝试思考一下他所给的一段代码输出是什么. 其代码如下: class T { void foo() { this.bar(); } void bar() { Sy ...

  3. 福利贴——爬取美女图片的Java爬虫小程序代码

    自己做的一个Java爬虫小程序 废话不多说.先上图. 目录命名是用标签缩写,假设大家看得不顺眼能够等完成下载后手动改一下,比方像有强迫症的我一样... 这是挂了一个晚上下载的总大小,只是还有非常多由于 ...

  4. 在ASP.NET下做了一个实验MVC的小东西

    星期五下班前一时兴起,对MVC发表了一点看法.后来就想干脆弄个小东西来验证一些自己的想法帮组理清思路.所要源代码的免了,3个小时的急就章实在是乱得可以,既没有好的架构,也没有任何代码质量可言,主要是实 ...

  5. Java学习笔记二十九:一个Java面向对象的小练习

    一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...

  6. webmagic的设计机制及原理-如何开发一个Java爬虫

    之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...

  7. 做为一个Java程序员,你需要哪些傍身的技能?

    最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...

  8. 编写你的第一个 Java 版 Raft 分布式 KV 存储

    前言 本文旨在讲述如何使用 Java 语言实现基于 Raft 算法的,分布式的,KV 结构的存储项目.该项目的背景是为了深入理解 Raft 算法,从而深刻理解分布式环境下数据强一致性该如何实现:该项目 ...

  9. webmagic的设计机制及原理-如何开发一个Java爬虫 转

    此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-ma ...

随机推荐

  1. Qt 在Label上面绘制罗盘

    自己写的一个小小的电子罗盘的一个小程序,不过是项目的一部分,只可以贴绘制部分代码 效果如下图 首先开始自己写的时候,虽然知道Qt 的坐标系是从左上角开始的,所以,使用了算法,在绘制后,在移动回来,但是 ...

  2. MySQL☞insert value与values

    最近公司事情太忙,作为以一挑十的测试,只能苦逼的累死累活的.好不容易临近上线,可以偷个懒写个文章. 简单的说说如何向表中插入数据: 1.向表中所有的列插入数据(插入多行数据): insert  int ...

  3. 第十七篇 Python函数之闭包与装饰器

    一. 装饰器 装饰器:可以拆解来看,器本质就是函数,装饰就是修饰的意思,所以装饰器的功能就是为其他函数添加附加功能. 装饰器的两个原则: 1. 不修改被修饰函数的源代码 2. 不修改被修饰函数的调用方 ...

  4. C 计算金额

    #include <stdio.h> int main(int argc, char **argv) { \\定义两个变量 a金额 z跟票面 int a=0; int z=0;\\ 输入金 ...

  5. mysql字段名与关键字重复解决办法

    mysql 关键字与字段名相同,插入或者修改里会报错 解决办法: 1.改字段名,如果库里面表结构关系不复杂,修改字段名就解决 2.在插入或者修改字段时,字段名加上  ` 包上,注意:这里不是引号,是英 ...

  6. Docker安装Zabbix全记录

    零.Zabbix架构设计 一.docker安装mysql 查找Docker Hub上的mysql镜像: [root@10e131e69e15 ~]# docker search mysql INDEX ...

  7. 寻找完全数(C++)

    [问题描述] 输入一个大于 1 的正整数 n,请你将大于 1 和小于或等于 n 的所有完全数输出.所谓完全数就是因子(不算其本身)之和等于它本身的数.例如 1+2+4+7+14=28,所以 28 是完 ...

  8. Visual Studio 2010安装包

    点击下载

  9. Structure From Motion(SFM,从运动恢复结构)

    Structure From Motion(SFM,从运动恢复结构) 阅读相关文献: Wu et al. Multicore Bundle Adjustment Agarwal et. al. Bun ...

  10. JavaSE复习(六)函数式接口

    函数式接口 有且仅有一个抽象方法的接口 @FunctionalInterface注解 一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错.需要注 意的是,即使 ...