发布时间 : 星期一 文章实验6JavaAWT及Swing应用更新完毕开始阅读b59bc7bf9fc3d5bbfd0a79563c1ec5da51e2d646
实验6 Java AWT及Swing应用
实验内容
(1)按钮有序排列 (2)密码验证问题
(3)名片录入管理界面设计 (4)文字字体设计窗体
1、按钮有序排列
实验目的:
(1) 了解 GUI 的概念 ;
(2) 了解 java.awt 包和 javax.swing 包, 以及比较它们具有的同性质的组件的异同; (3) 掌握和运用 Java 的基本GUI 组件, 了解它们的特点。 实验任务:
本实验要求定义按钮若干让它们按照从左向右的顺序依次排列, 显示5个带图标的按钮。
实验步骤:
在 Eclipse 中新建一个 Chapter11项目 , 按照下列要求完成实验。 练习: 调试和运行程序 ButtonCounter.java;
要求: 在当前项目Chapter11中, 新建一个文件ButtonCounter.java, 将程序清单3-1 中的程序输入并保存。该程序可以定义按钮若干使它们按照从左向右的顺序依次排列, 显示5个带图标的按钮 , 运行结果如图1所示。阅读和分析程序ButtonCounter.java, 调试编译并运行该程序。
图1
程序清单 3-1 ButtonCounter.java //ButtonCounter.java import javax.swing.*; import java.awt.*;
public class ButtonCounter extends JFrame { public ButtonCounter() { super(\显示按钮窗口\
1
ImageIcon Icon = new ImageIcon(\ JButton jbt1 = new JButton(\按钮\ JButton jbt2 = new JButton(\按钮\ JButton jbt3 = new JButton(\按钮\ JButton jbt4 = new JButton(\按钮\ JButton jbt5 = new JButton(\按钮\
JPanel p1 = new JPanel(); p1.add(jbt1);
JPanel p2 = new JPanel(); p2.add(jbt2);
JPanel p3 = new JPanel(); p2.add(jbt3);
JPanel p4=new JPanel(); p4.add(jbt4);
JPanel p5=new JPanel(); p5.add(jbt5);
getContentPane().setLayout(new FlowLayout()); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p3); getContentPane().add(p4); getContentPane().add(p5); }
public static void main(String[] args) { // Create a frame and set its properties JFrame frame = new ButtonCounter(); frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } 思考
(1) 在程序的 main() 方法中有语句Frame.pack(), 该方法的作用是什么 ? 该方法的作用是自动确定Frame的大小。
(2) 程序中语句Frame.setDefaultCloseOperation(JFrame.EXIT-ON-CLOSE); 的作用是什么 ? 去掉该语句 , 程序会出现怎样的运行结果 ? 该语句的作用是使执行程序结束。去掉该语句,关闭窗口,但是命令提示符并没有正常结束。需要按Ctrl+C才行。
(3) 如果将程序中的语句 getContentPane().setLayout(new FlowLayout()); 去掉 , 程序的运行结果会发生变化吗 ? 如果不发生变化是什么原因 ? 如果发生变化 , 会出现什么现象 ? 请解释原因。
程序的运行结果会发生变化,只出现一个按钮。因为去掉该语句后,布局管理器被取消了,只有调用每个组件的相关方法,才能为这些组件在容器中一一定位。
2
(4) 如果将程序中的按钮组件 jbtl 换成 java.awt 包中的 Button 组件对象 , 换过后的组件和原来的 JButton 在外观上会出现什么不同 ?
颜色不同,Button 组件颜色是灰色,同JPanel相同。
注意 : 在使用 Eclipse 时 , 如果在运行的时候希望能调用一些图片 , 可以将图片放在定义该项目 Chapterll 下的目录 image 中 , 如果没有该目录 , 需要用户自己定义一个 image 目录。在编写程序的时候 , 就可以通过相对路径 “image/xxx.gif\等形式装载图片。
2、密码验证问题
实验目的 :
(l) 进一步了解和掌握 javax.swing 包中的常用 GUI 组件 ;
(2) 比较 Swing 包中的 JTextField 和 JPasswordField 在使用中的异同 ; (3) 初步了解和运用事件处理机制和 Action 事件的处理。 实验任务:
编写一个 Java 程序 , 实现用户根据自己的密码进入界面, 如果用户输入信息正确 , 则输出 “ 欢迎×××\?2X户 ”, 否则用户还可以尝试两次 , 如果尝试阶段输入信息错误, 则输出 “ 请输入正确的信息 ”, 如果尝试失败 , 用户则退出。 实验步骤 :
打开 Eclipse, 打开一个已有项目如 Chapter3, 在该项目下完成如下练习。 练习: 密码验证
要求: 在当前项目如Chapter3下, 新建一个文件PasswordVerification.java, 将程序清单 3-2 中的程序输入并保存。要求该程序完成如下功能 : 用户根据自己的密码进入界面 , 如果用户输入信息正确 , 则输出 “ 欢迎××× ”, 否则用户还可以尝试两次 , 如果尝试阶段输入信息错误 , 则输出 “请输入正确的信息” , 如果尝试失败 , 用户则退出。调试并编译程序 PasswordVerification.java, 运行该程序 , 运行结果如图2 、图 3和图 4所示 , 请将该程序中的代码1~代码7补充完整。
图2
图3
3
图4
程序清单 3-2 PasswordVerification.java //PasswordVerification.java import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class PasswordVerification extends JFrame implements ActionListener{ JLabel userLabel;//定义用户标签提示
JLabel passwordLabel;//定义密码标签提示 JTextField userText;//定义用户文本框
JPasswordField passwordText;//定义密码文本框 int count=1;//统计输入信息的次数 public PasswordVerification() { super(\请输入信息\
Container container=getContentPane();//得到容器对象container; container.setLayout(new FlowLayout());//设置默认布局 userLabel=new JLabel(\用户名\创建用户标签 passwordLabel=new JLabel(\密 码\创建密码标签 userText=new JTextField();//创建用户文本输入框
passwordText=new JPasswordField();//创建密码输入文本框 passwordText.addActionListener(this);//注册事件监听者; container.add(userLabel); container.add(userText);
container.add(passwordLabel); container.add(passwordText); setSize(240,100); setVisible(true); }
public void actionPerformed(ActionEvent e){//事件处理
String userName=new String(\陈三\假设为正确的用户名; String password=new String(\假设为正确的密码; if(e.getSource()==passwordText){ count++;
char[] passwords=passwordText.getPassword();
if(userText.getText().equals(userName)&&password.equals(new String(passwords))) {
JOptionPane.showMessageDialog(null, \欢迎您:\
4