当前位置:文档之家› java图形用户界面设计

java图形用户界面设计

实验名称:图形用户界面设计一、实验目的1.掌握常用图形界面组件(按钮、文本框等)对象的创建及其常用方法的使用。

如,按钮的常用方法是getLabel(),文本框的常用方法有setText(),getText()等。

2.掌握常用的布局管理类CardLayou,BorderLayout,FlowLayout,GridLayout的使用策略。

能够将它们联合起来使用。

3.掌握java语言的事件处理。

每个事件对应的接口(或适配器类)是什么,每个接口有哪些方法,如何进行委托处理,被委托者必须做什么。

二、实验环境(软件、硬件环境)PC机 JDK包三、实验原理通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。

javax.swing包中的组件类可以帮助我们完整界面的设计。

javax.swing包的JComponent类是java.awt包中的Container类的一个直接子类、Component类的间接子类。

javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。

在学习GUI编程时,必须很好地理解并掌握两个概念:容器类和组件类,必须很好地掌握java的事件处理机制。

四、实验容及步骤实验容:密码验证问题。

编写一个Java程序,实现用户根据自己的密码进入界面,如果用户输入信息正确,则输出“欢迎XXX用户”,否则用户还可以尝试两次,如果尝试阶段输入信息错误,则输出“请输入正确的信息”,如果尝试失败,用户则退出。

调试并编译程序PasswordVerification.java,运行该程序,运行结果如图8-1、图8-2、图8-3和图8-4所示,请将程序中的代码1~代码7补充完整。

图8-1 运行结果,输入正确信息图8-2 显示欢迎信息图8-3 运行结果,输入错误信息图8-4 显示重新输入信息程序清单://PasswordVerification.javaimport javax.swing.*;import java.awt.event.*;import java.awt.*;public class PasswordVerification extends JFrame{JLabel userLabel;JLabel passwordLabel;JTextField userText;JPasswordField passwordText;int count=1;//统计输入信息的次数public PasswordVerification(){super("请输入信息");Container c =代码1;//得到容器对象containerc.setLayout(new FlowLayout());//设置默认布局userLabel=代码2//创建用户标签passwordLabel=代码3;//创建密码标签userText=代码4//创建用户文本输入框passwordText=代码5//创建密码输入文本框passwordText. 代码6(new ActionListener(){ //注册事件监听者public void actionPerformed(代码7)//事件处理{String userName=new String("三");//假设为正确的用户名String password=new String("12345678");//假设为正确的密码if(e.getSource()==passwordText){count++;char[] passwords=passwordText.getPassword();if(userText.getText().equals(userName)&&password.equals(newString(passwords))){JOptionPane.showMessageDialog(null,"欢迎您:"+userName);System.exit(0);}else if(count>3)System.exit(0);else {JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");}}}});c.add(userLabel);c.add(userText);c.add(passwordLabel);c.add(passwordText);setSize(240,100);setVisible(true);}public static void main(String[] args){PasswordVerification pv=new PasswordVerification();pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}五、实验数据及处理import javax.swing.*;import java.awt.event.*;import java.awt.*;public class PasswordVerification extends JFrame{JLabel userLabel;JLabel passwordLabel;JTextField userText;JPasswordField passwordText;int count=1;//统计输入信息的次数public PasswordVerification(){super("请输入信息");Container c =getContentPane();//得到容器对象containerc.setLayout(new FlowLayout());//设置默认布局userLabel=new JLabel("用户:");//创建用户标签passwordLabel=new JLabel("密码:");//创建密码标签userText=new JTextField(5);//创建用户文本输入框passwordText=new JPasswordField(5);//创建密码输入文本框 passwordText.addActionListener(new ActionListener() { //注册事件监听者public void actionPerformed( ActionEvent e) //事件处理{String userName=new String("三");//假设为正确的用户名String password=new String("12345678");//假设为正确的密码 if(e.getSource()==passwordText){count++;char[] passwords=passwordText.getPassword();if(userText.getText().equals(userName)&&password.equals(new String(passwords))){JOptionPane.showMessageDialog(null,"欢迎您:"+userName);System.exit(0);}else if(count>3)System.exit(0);else {JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");}}}});c.add(userLabel);c.add(userText);c.add(passwordLabel);c.add(passwordText);setSize(240,100);setVisible(true);}public static void main(String[] args){PasswordVerification pv=new PasswordVerification();pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}运行结果:思考:(1)程序PasswordVerification.java中第3行语句java.awt.*的作用是什么?答:添加容器类。

(2)程序actionPerformed()方法中if(e,getSource()==passwordText)的作用是什么?如果去掉该条件判断,程序运行结果会发生什么变化?答:用来判断发起事件的控件是不是passwordText(3)观察actionPerformed()方法中语句“char[] passwords=passwordText.getPassword();”的作用是什么?答:是使用char[] getPassword()方法返回密码框中的密码.(4)观察程序中定义的main()方法,如果在PasswordVerification pv=new PasswordVerification();语句后,添加语句System.exit()会出现什么问题?为什么?答:程序打开后就会自动关闭。

因为在创建PasswordVerification对象之后就触发的system.exit().(5)从给定程序的运行结果看,密码输入的回显字符是“*”,如果把回显字符换成“#”,该如何处理?答:密码框课用setEchoChar(’#’)来改变回显符为#。

添加语句passwordText.setEchoChar(“#”)(6)如果要求在信息输入错误处理中,一旦输入完密码信息,用户输入框和密码输入框可以清空,请将上述程序修改,使之实现功能。

import javax.swing.*;import java.awt.event.*;import java.awt.*;public class PasswordVerification extends JFrame{JLabel userLabel;JLabel passwordLabel;JTextField userText;JPasswordField passwordText;int count=1;//统计输入信息的次数public PasswordVerification(){super("请输入信息");Container c =getContentPane();//得到容器对象containerc.setLayout(new FlowLayout());//设置默认布局userLabel=new JLabel("用户:");//创建用户标签passwordLabel=new JLabel("密码:");//创建密码标签userText=new JTextField(5);//创建用户文本输入框passwordText=new JPasswordField(5);//创建密码输入文本框passwordText.addActionListener(new ActionListener() { //注册事件监听者public void actionPerformed( ActionEvent e) //事件处理{String userName=new String("三");//假设为正确的用户名String password=new String("12345678");//假设为正确的密码if(e.getSource()==passwordText){count++;char[] passwords=passwordText.getPassword();if(userText.getText().equals(userName)&&password.equals(new String(passwords))){JOptionPane.showMessageDialog(null,"欢迎您:"+userName);System.exit(0);}else if(count>3)System.exit(0);else {JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");userText.setText("");passwordText.setText("");}}}});c.add(userLabel);c.add(userText);c.add(passwordLabel);c.add(passwordText);setSize(240,100);setVisible(true);}public static void main(String[] args){PasswordVerification pv=new PasswordVerification();pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}六、实验结论及问题分析1.在上机编写程序时,不仅要调试出来结果,更重要的是要把算法彻底搞清楚。

相关主题