本文共 5449 字,大约阅读时间需要 18 分钟。
Java swing提供了一种轻量级的组件,尽量让这些组件在各个平台上的工作方式都相同。
学生信息管理系统登录页面是由swing组件实现的,其中用到的有JFrame、JPanel、LayoutManager、JTextArea、JButton等。JFrame
public class JFrame extends Frame implements WindowConstants, Accessible, RootPaneContainer JFrame相当于一个容器可以承载JPanel等组件,JFrame就是页面的窗体。 常用的JFrame方法有以下: void setSize(int width, int height):设置窗体的大小 void setVisible(boolean b):设置窗体是否可见,注意,这个函数必须在JFrame中添加上所有的组件后调用 Component add(Component comp):将JPanel、JButton等组件添加到JFrame中 void setDefaultCloseOperation(int operation):点击窗口右上方的关闭时的操作,有四种操作,如下:如果不点击右上角的关闭按钮,而想通过JFrame页面的一个JButton关闭JFrame并释放资源时,需要用到方法dispose();
例如:这是一个可以进行增删改查的主页面,我想在点击删除按钮时将主界面关闭并释放资源,下面对比setVisible(false)和dispose():
明显看见dispose()可以关闭界面并释放资源。
JPanel
public class JPanel extends JComponent implements Accessible JPanel是swing工具包中的面板容器类,可以添加到JFrame中,也可以包含JButton等组件。 JPanel默认的布局管理器是FlowLayout流式布局。 JPanel常用的方法有以下:LayoutManager
LayoutManager是布局管理器,常用的有以下几种:ActionListener
public interface ActionListener extends EventListener ActionListener是接收操作事件的侦听接口,比如,通过addActionListener方法将创建的ActionListener对象加到登录按钮上,当点击登录按钮时,会调用ActionListener对象的actionPerformed 方法去执行动作。实现代码如下:
package com.company.jframe;import com.company.domain.UserInfo;import com.company.utils.FileUtil;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;public class LoginGui{ JTextField jName = new JTextField(10); JPasswordField jPassWd = new JPasswordField(10); JFrame loginJFrame = new JFrame("学生信息管理系统登录页面"); public LoginGui(){ loginJFrame.setLayout(new GridLayout(4,1)); loginJFrame.setSize(400, 300);//设置界面的大小 loginJFrame.add(initTitleJPanel()); loginJFrame.add(initUserNameJPanel()); loginJFrame.add(initPssWdJPanel()); loginJFrame.add(initButtonJPanel()); loginJFrame.setVisible(true);//设置界面为可见的 loginJFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private JPanel initTitleJPanel(){ //定义一个放提示信息的JPanel JPanel jPanel4up = new JPanel(new FlowLayout()); JLabel title = new JLabel("欢迎登陆!"); title.setFont(new Font("宋体",Font.BOLD,16)); jPanel4up.add(title); return jPanel4up; } private JPanel initUserNameJPanel(){ //定义一个输入用户名的JPanel JPanel userNameJPanel = new JPanel(new FlowLayout()); JLabel name = new JLabel("用户名:"); userNameJPanel.add(name); userNameJPanel.add(jName); name.setHorizontalAlignment(SwingConstants.CENTER); return userNameJPanel; } private JPanel initPssWdJPanel(){ //定义一个输入密码的JPanel JPanel jPanel4Passwd = new JPanel(new FlowLayout()); JLabel passwd = new JLabel("密 码:"); jPanel4Passwd.add(passwd); jPanel4Passwd.add(jPassWd); passwd.setHorizontalAlignment(SwingConstants.CENTER); return jPanel4Passwd; } private JPanel initButtonJPanel(){ //定义一个放Button的JPanel JPanel jPanel4Button = new JPanel(new FlowLayout()); final JButton login = new JButton("登录"); //给登录按钮添加侦听接口 login.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //获取输入框输入的用户名和密码 String userName = jName.getText(); String passWd = String.valueOf(jPassWd.getPassword()); ListuserInfoList = readUserInfoFile(); //定义一个存放用户登录信息的列表 boolean userIsExist = false; //定义一个flag去标识用户是否存在 //用户名和密码放在用户信息list中,依次取出用户名和密码去判断输入的用户名和密码是否正确 for(UserInfo userInfo:userInfoList){ if(userInfo.getUserName().equals(userName)){ if (userInfo.getPassWd().equals(passWd)){ System.out.println("登录成功!"); StuInfoGui stuInfoGui = new StuInfoGui();//登录成功跳转到用户信息页面 loginJFrame.setVisible(false); }else { System.out.println("密码错误!"); } userIsExist = true; } } if(!userIsExist){ System.out.println("该用户不存在!"); } } }); //重置按钮 JButton reset = new JButton("重置"); reset.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jName.setText(null); jPassWd.setText(null); } }); jPanel4Button.add(login); jPanel4Button.add(reset); return jPanel4Button; } public List readUserInfoFile(){ List userInfoList = new ArrayList (); String userInfoStr = FileUtil.fileRead("D:\\gitSource\\student-management-system\\userlogininfo.txt"); String[] userInfoArr = userInfoStr.split(","); for (int i = 0 ;i