欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 13:37:31
...

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

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


大概意思就是说:windows builder一个java的一个组件,可以在eclipse实现java的界面可视化编程。java小程序之学生信息录入界面(一阵狂喜)

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

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

1.界面

2.功能

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

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

接下来最重要的就是功能,我们要实现的是让每一个控件中的内容都要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小程序之学生信息录入界面

 

保存信息:

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

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

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