java小程序之学生信息录入界面

  小程序我的项目下载链接:点击打开链接

  因为这学期比赛太多,蓝桥杯,团体程序设计大赛,ACM省赛等原因基本这学期的课程都没上,比赛完后开始去上课,java老师让用java写一个学生信息录入界面,把界面中的信息保存在学生信息.txt文本文档里。。。。最近也没什么事,就看着课本学,结果发现java界面里面的那些textField,JButton。。。。实在太难控制它在JFrame上位置。,突发奇想,基于上学期学了c# ,两者差不多,既然c#可以界面操作,说不定java也有,于是开始发挥百度的强大作用,果然有:java小程序之学生信息录入界面_第1张图片


大概意思就是说:windows builder一个java的一个组件,可以在eclipse实现java的界面可视化编程。(一阵狂喜)

跟着网上它的安装和基本使用方法:使用教程链接

接下来我们需要完成两部分:

1.界面

2.功能

有了windows builder 之后界面很快就完成了(如下图:)java小程序之学生信息录入界面_第2张图片

果然比在代码控制控件位置简单多啦。。。

接下来最重要的就是功能,我们要实现的是让每一个控件中的内容都要Write入学生信息.txt里面。。

这是书上写的一个字符文件流读写文本文件(实现的功能:将文件a.txt读取到文本区,经修改后,另存为b.txt)

import java.io.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
class Win extends JFrame implements ActionListener//接口设置监听器
{
    FileReader r_file;//字符文件输入流
    FileWriter w_file;//字符文件输出流
    BufferedReader buf_reader;//与FileReader类配合使用,将字符输入到缓冲区,使数据处理速度大大加快,提高读写的效率
    BufferedWriter buf_writer;
    JTextArea txt;
    JButton btn1,btn2;
    Win()
    {
        setSize(400,400);
        setVisible(true);
        txt = new JTextArea(10,10);
        btn1 = new JButton("Read");
        btn2 = new JButton("Write");
        btn1.addActionListener(this);//建立监听器和事件源(按钮)之间的联系
        btn2.addActionListener(this);
        JPanel p = new JPanel();
        add(txt,"Center");
        add(p,"South");
        p.setLayout(new FlowLayout());//设置窗体为浮动窗体
        p.add(btn1);
        p.add(btn2);
        validate();//使窗体中的组件为可见
        setDefaultCloseOperation(EXIT_ON_CLOSE);//设置关闭窗体,退出窗体
    }
    public void actionPerformed(ActionEvent e)
    {
        //当单击按钮对象btn时,按钮对象会产生一个ActionEvent事件,事件监听器监听到这个事件,把它作为实现ActionListener接口的actionPerformed方法的参数,在actionPerformed方法中处理动作事件。
        if(e.getSource()==btn1)
        {
            readFile();
        }
        if(e.getSource()==btn2)
        {
            writeFile();
        }
    }
    //读取文件
    public void readFile()
    {
        String s;
        try
        {
            File f=new File("C:\\Users\\Administrator\\Desktop\\java小程序\\a.txt");
            r_file = new FileReader(f);//将文件f里面的内容给字符文件输入流
            buf_reader = new BufferedReader(r_file);
        }
        catch(IOException ef)
        {
            System.out.print(ef);
        }
        try
        {
            while ((s = buf_reader.readLine())!=null)
            {
                txt.append(s+'\n');
            }
        }
        catch(IOException er)
        {
            System.out.print(er);
        }
    }
    public void writeFile()
    {
        try
        {
            w_file = new FileWriter("C:\\Users\\Administrator\\Desktop\\java小程序\\b.txt");
            buf_writer = new BufferedWriter(w_file);
            String str = txt.getText();
            buf_writer.write(str,0,str.length());
            buf_writer.flush();//一般情况下,writer方法向输出流写数据时,先把数据存放在缓冲区,这时缓冲区的数据不会自动写入输出流,只有当缓冲区满时,才会一次性将缓冲区的数据写入输出流,即写入文件。为了把尚未填满的缓冲区中的数据送出去,这时就要使用flush方法。
        }
        catch(IOException ew)
        {
            System.out.print(ew);
        }
    }
}
public class e81
{
    public static void main(String args[])
    {
        Win w=new Win();


    }
}

知道这个之后可以很容易完成TextField控件的写入,下面要解决的就是下拉列表的写入,JComboBox需要在你选中内容后获得他的信息。首先需要给需要设置监听器:
public class H implements ItemListener { }
下面是它的选中事件:
public void itemStateChanged(ItemEvent e)
{
    sex=e.getItem().toString();
}
下面是整个小程序实现的全部代码:

知道这个之后可以很容易完成TextField控件的写入,下面要解决的就是下拉列表的写入,JComboBox需要在你选中内容后获得他的信息。首先需要给需要设置监听器:

public class H implements ItemListener 
{ }
下面是它的选中事件:

public void itemStateChanged(ItemEvent e)
{
    sex=e.getItem().toString();
}

下面是整个小程序的代码:

package 学生信息;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class H implements ItemListener{ //JComboBox的监听器

	String sex="";//注意要初始化,不然会抛出错误
	private JFrame frame;
	private JTextField textField;

    //FileReader r_file;
    FileWriter w_file;
    //BufferedReader buf_reader;
    BufferedWriter buf_writer;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;
    private JTextField textField_4;
  

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					H window = new H();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public H() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.getContentPane().setFont(new Font("宋体", Font.PLAIN, 22));
		frame.setBounds(100, 100, 817, 516);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("\u5B66\u751F\u4FE1\u606F\u5F55\u5165\u754C\u9762");
		lblNewLabel.setBounds(239, 15, 334, 67);
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 30));
		frame.getContentPane().add(lblNewLabel);
		
		JLabel label = new JLabel("\u5B66\u53F7\uFF1A");
		label.setBounds(29, 107, 81, 21);
		label.setFont(new Font("宋体", Font.PLAIN, 24));
		frame.getContentPane().add(label);
		
		textField = new JTextField();
		textField.setBounds(102, 106, 167, 27);
		frame.getContentPane().add(textField);
		textField.setColumns(10);
		
		final JButton btnNewButton = new JButton("\u4FDD\u5B58");
		btnNewButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) //按钮的点击事件
			{
				if(e.getSource()== btnNewButton)
				{
					writeFile();
				}
				if(e.getSource()== btnNewButton)
				{
					System.exit(0);
				}
			}
			public void writeFile()
			{
				try
				{
					w_file = new FileWriter("C:\\Users\\Administrator\\Desktop\\java小程序\\学生信息.txt");
					buf_writer = new BufferedWriter(w_file);
					String t=" ";
					String number = textField .getText();//读入学号
					buf_writer.write(number,0,number.length());
					buf_writer.write(t,0,t.length());
					
					String name = textField_1.getText();//读入姓名
					buf_writer.write(name,0,name.length());
					buf_writer.write(t,0,t.length());
					
					buf_writer.write(sex,0,sex.length());//读入性别
					buf_writer.write(t,0,t.length());
					
					String nom = textField_2 .getText();//读入宿舍号
					buf_writer.write(nom,0,nom.length());
					buf_writer.write(t,0,t.length());
					
					String clas= textField_3 .getText();//读入班级
					buf_writer.write(clas,0,clas.length());
					buf_writer.write(t,0,t.length());
					
					String cell= textField_4 .getText();//读入班级
					buf_writer.write(cell,0,cell.length());
					buf_writer.write(t,0,t.length());
					buf_writer.flush();
					JOptionPane.showMessageDialog(null, "保存成功");
					
				}
				catch(IOException ew)
				{
					System.out.print(ew);
				}
			}
			
		});
		btnNewButton.setBounds(531, 371, 123, 29);
		frame.getContentPane().add(btnNewButton);
		
		JLabel lblNewLabel_1 = new JLabel("\u59D3\u540D\uFF1A");
		lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 24));
		lblNewLabel_1.setBounds(29, 163, 81, 21);
		frame.getContentPane().add(lblNewLabel_1);
		
		textField_1 = new JTextField();
		textField_1.setBounds(102, 162, 167, 27);
		frame.getContentPane().add(textField_1);
		textField_1.setColumns(10);
		
		JLabel label_1 = new JLabel("\u6027\u522B\uFF1A");
		label_1.setFont(new Font("宋体", Font.PLAIN, 24));
		label_1.setBounds(29, 225, 81, 21);
		frame.getContentPane().add(label_1);
		
		JComboBox comboBox = new JComboBox();
		 
		comboBox.setModel(new DefaultComboBoxModel(new String[] {"\u7537", "\u5973"}));
		comboBox.setBounds(102, 224, 167, 27);
		comboBox.addItemListener(this);
		frame.getContentPane().add(comboBox);
		
		JLabel label_2 = new JLabel("\u5BBF\u820D\u53F7\uFF1A");
		label_2.setFont(new Font("宋体", Font.PLAIN, 24));
		label_2.setBounds(393, 97, 113, 21);
		frame.getContentPane().add(label_2);
		
		JLabel label_3 = new JLabel("\u73ED\u7EA7\uFF1A");
		label_3.setFont(new Font("宋体", Font.PLAIN, 24));
		label_3.setBounds(393, 165, 81, 21);
		frame.getContentPane().add(label_3);
		
		JLabel label_4 = new JLabel("\u7535\u8BDD\uFF1A");
		label_4.setFont(new Font("宋体", Font.PLAIN, 24));
		label_4.setBounds(393, 227, 81, 21);
		frame.getContentPane().add(label_4);
		
		textField_2 = new JTextField();
		textField_2.setBounds(521, 97, 147, 27);
		frame.getContentPane().add(textField_2);
		textField_2.setColumns(10);
		
		textField_3 = new JTextField();
		textField_3.setBounds(521, 162, 147, 27);
		frame.getContentPane().add(textField_3);
		textField_3.setColumns(10);
		
		textField_4 = new JTextField();
		textField_4.setBounds(521, 224, 147, 27);
		frame.getContentPane().add(textField_4);
		textField_4.setColumns(10);
		
		JButton button = new JButton("\u53D6\u6D88");
		button.setBounds(86, 371, 123, 29);
		frame.getContentPane().add(button);
	}

	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method stub
		
	}
}




完成界面:

java小程序之学生信息录入界面_第3张图片

 

保存信息:

java小程序之学生信息录入界面_第4张图片

总结:我觉得Windows Builder控件对新手做界面操作还是比较方便的,又学到一个新东西。。。

(ps:不知道下面为什么会出现东西,有没有大神有解决方法)

 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
 

你可能感兴趣的:(【Java】)