1、JAVA 第四次上机作业实验报告 一、上机内容 Java GUI 编程实验 编写程序,利用 JTextField 和 JPasswordField 分别接收用户输入的用户名和密码,并对用户输入的密码进行检验。对于每个用户名有三次密码输入机会。要求: 1、 所有用户名和密码信息都预先存放在文件 passwords.txt中,使用文件流读入; 2、 当三次密码输入均错误时,弹出模式化对话框阻塞窗口,并在对话框关闭时同时关闭窗口。 二、上机分析 1、组件定义及界面显示内容: public class Login private JFrame frame; private JLabel label1;
2、 private JLabel label2; private JLabel label3; private JPasswordField jf; private JTextField jt; private JButton yes; private JButton no; private int i=0; public Login() frame=new JFrame(“用户登陆 “); label1=new JLabel(“西电芝麻开门 “); label2=new JLabel(“ 用户名: “); label3=new JLabel(“密 码: “); jf=new JPassword
3、Field(15); jt=new JTextField(15); yes=new JButton(“登录 “); no=new JButton(“取消 “); init(); addEventHandler(); 2、界面格局设计: public void init() JPanel north=new JPanel(); JPanel center=new JPanel(); JPanel south=new JPanel(); north.setLayout(new FlowLayout(); center.setLayout(new FlowLayout(2); south.setLa
4、yout(new FlowLayout(); north.add(label1); center.add(label2); center.add(jt); center.add(label3); center.add(jf); south.add(yes); south.add(no); frame.setLayout(new BorderLayout(); frame.add(north,BorderLayout.NORTH); frame.add(center,BorderLayout.CENTER); frame.add(south,BorderLayout.SOUTH); public
5、 void showMe() label1.setFont(new Font(“隶体 “,Font.BOLD,16); frame.setLocation(600, 400); frame.setSize(250,200); frame.setResizable(false);/不能改变窗口大小 frame.setVisible(true); /frame.pack();/设置窗口为最适尺寸 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 3、操作后显示设计 当三次密码输入均错误时,弹出模式化对话框阻塞窗口,并在对话框关闭时同时关闭窗
6、口。 public void addEventHandler() yes.addActionListener( new ActionListener() SuppressWarnings(“deprecation“) public void actionPerformed(ActionEvent e) if(jt.getText().equals(“abc“) else if(i=2) System.exit(0); else i+; JOptionPane.showMessageDialog(null, “登陆失败 ,你还有 “+(3-i)+“次机会 “); ); no.addActionL
7、istener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); public static void main(String args) new Login().showMe(); 三、代码如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; impo
8、rt java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import java.io.*; public class Login private JFrame frame;
9、private JLabel label1; private JLabel label2; private JLabel label3; private JPasswordField jf; private JTextField jt; private JButton yes; private JButton no; private int i=0; public Login() frame=new JFrame(“用户登陆 “); label1=new JLabel(“西电芝麻开门 “); label2=new JLabel(“ 用户名: “); label3=new JLabel(“密 码
10、: “); jf=new JPasswordField(15); jt=new JTextField(15); yes=new JButton(“登录 “); no=new JButton(“取消 “); init(); addEventHandler(); public void init() JPanel north=new JPanel(); JPanel center=new JPanel(); JPanel south=new JPanel(); north.setLayout(new FlowLayout(); center.setLayout(new FlowLayout(2);
11、 south.setLayout(new FlowLayout(); north.add(label1); center.add(label2); center.add(jt); center.add(label3); center.add(jf); south.add(yes); south.add(no); frame.setLayout(new BorderLayout(); frame.add(north,BorderLayout.NORTH); frame.add(center,BorderLayout.CENTER); frame.add(south,BorderLayout.SO
12、UTH); public void showMe() label1.setFont(new Font(“隶体 “,Font.BOLD,16); frame.setLocation(600, 400); frame.setSize(250,200); frame.setResizable(false);/不能改变窗口大小 frame.setVisible(true); /frame.pack();/设置窗口为最适尺寸 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void addEventHandler() yes.ad
13、dActionListener( new ActionListener() SuppressWarnings(“deprecation“) public void actionPerformed(ActionEvent e) if(jt.getText().equals(“abc“) else if(i=2) System.exit(0); else i+; JOptionPane.showMessageDialog(null, “登陆失败 ,你还有 “+(3-i)+“次机会 “); ); no.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); public static void main(String args) new Login().showMe(); 四、运行结果显示: 1、运行程序出现如下界面: