《实验 图形用户界面.doc》由会员分享,可在线阅读,更多相关《实验 图形用户界面.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 图形用户界面(1) 4学时【实验目的】1. 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2. 了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。【实验要求】1. 掌握在容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。3. 掌握编写独立运行的窗口界面的方法。4. 了解Java Swing 组件的使用方法。5. 了解对话框的使用方法。【实验内容】一创建图形用户界面图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用
2、设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add 方法把组件加入到容器中。1 在Frame 中添加标签、按钮并使用网格布局(1) 程序功能:在Frame 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。(2) 编写LX6_1.java 程序文件,源
3、代码如下。import java.awt.*;import javax.swing.*;public class LX6_1JFrame f;JLabel l1;JButton b1;public void init()f = new JFrame();f.setLayout(new GridLayout(3,2);f.setTitle(First GUI test);f.setSize(300,200);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);l1=new JLabel(标签1);f.add(l1);b1=new JButton(按钮
4、1);f.add(b1);f.add(new JButton(按钮2);f.add(new JLabel(标签2);f.add(new JButton(按钮3);f.add(new JButton(按钮4);void show()f.show();public static void main(String arg)Base b= new Base();b.init();b.show();(3) 编译程序LX6_1.java并运行。2 在面板中添加组件(1) 程序功能:在Frame 中添加面板容器,并在面板容器中添加组件并使用不同的布局管理方式。(2) 编写LX6_2.java 程序文件,源代
5、码如下。import java.awt.*;import java.awt.Color;import javax.swing.*;public class LX6_2JFrame f;public void init()f = new JFrame();f.setSize(500,300);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setLayout(new GridLayout(3,1);f.setFont(new Font(Arial,Font.PLAIN,20);JLabel l=new JLabel(这是Frame容器中的标签
6、,JLabel.CENTER);f.add(l);JPanel panel1=new JPanel();f.add( panel1);panel1.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(new BorderLayout();/设置边界布局panel1.add(North, new JButton(北);panel1.add(South, new JButton(南);panel1.add(East, new JButton(东);panel1.add(West, new JButto
7、n(西);panel1.add(Center, new JLabel(这是在 Panel1 面板 中部添加的标签);JPanel panel2=new JPanel();f.add( panel2);panel2.setLayout(new GridLayout(3,1); /设置网格布局JComboBox c=new JComboBox ();/创建下拉式列表c.addItem(北京);c.addItem(上海);c.addItem(天津);JLabel l1=new JLabel(这是在 Panel2 面板中的标签);JButton b1=new JButton(Panel2 中的按钮);
8、panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);void show()f.show();public static void main(String args)LX6_2 b = new LX6_2 ();b.init();b.show();(3) 编译程序LX6_2.java并运行。二了解事件处理机制在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。在Java 中能产
9、生事件的组件叫做事件源,如按钮。如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。1单击按钮的事件处理程序(1)程序功能:为按钮编写单击事件处理方法。当用户用鼠标单击按钮时,标签记录按下的次数。(2)编写LX6_3.java 程序文件,源代码如下(代码中的按钮与标签使用的是java.awt中的组件,感受与javax.swing中的组件的区别)。import java.awt.*;import java.awt.event.*;import
10、 javax.swing.*;public class LX6_3 implements ActionListener / 实现动作事件监听接口public void init() JFrame f;Label l;int n=0;public void init()f=new JFrame();f.setSize(300,200);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setLayout(new FlowLayout();l=new Label(按钮记录按钮按下的次数, Label.CENTER);f.add(l);Button
11、 b=new Button(按钮);f.add(b);b.addActionListener (this); / 注册事件源的动作监听者public void actionPerformed(ActionEvent e) /实现单击事件接口的方法n+;l.setText(按下了+n+次);public void show()f.show();public static void main(String args)Base b=new Base();b.init();b.show();(3)编译程序LX6_3.java并运行。2. 选择复选框和单选框按钮的事件处理程序(1) 程序功能:在Fram
12、e上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10 进制数,选择不同选项可转换为2、8、16 进制数。(2) 编写LX6_4.java 程序文件,源代码如下。/import java.applet.Applet;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class LX6_4 extends JFrame implements ItemListener,ActionListener JTextArea area=new JTextArea(6,30);/创建文本区JScr
13、ollPane scroll = new JScrollPane(area);/文本区加滚动条String Item=2 进制,8 进制,16 进制,10 进制;JCheckBox cb=new JCheckBox5;JRadioButton radio=new JRadioButton5;JLabel l=new JLabel(输入10 进制数);JTextField TF=new JTextField(6);/创建单行文本框public void init() this.setLayout(new FlowLayout();add(l);add(TF);add(scroll);add(ne
14、w JLabel( 请选择进制:);for(int i=0; i4; i+) /创建复选框cbi=new JCheckBox(Itemi);add(cbi);cbi.addItemListener(this);ButtonGroup group=new ButtonGroup();/创建单选按钮add(new JLabel(请选择进制:);for(int i=0; i4; i+) radioi=new JRadioButton(Itemi);add(radioi);radioi.addActionListener(this);group.add(radioi);public void acti
15、onPerformed(ActionEvent e)int x=Integer.parseInt(TF.getText();JRadioButton t=(JRadioButton)e.getSource();if (t.getText()=Item0)area.append (你选择的是+t.getText()+ Integer.toBinaryString(x)+n);if (t.getText()=Item1)area.append (你选择的是+t.getText()+ Integer.toOctalString(x)+n);if (t.getText()=Item2)area.app
16、end (你选择的是+t.getText()+Integer.toHexString(x)+n);if (t.getText()=Item3)area.append (你选择的是+t.getText()+x+n);public void itemStateChanged(ItemEvent e) JCheckBox t=(JCheckBox)e.getSource();int x=Integer.parseInt(TF.getText();if (t.getText ()=Item0)area.append (你选择的是+Item0+ Integer.toBinaryString(x)+n);
17、if (t.getText ()=Item1)area.append (你选择的是+Item1+ Integer.toOctalString(x)+n);if (t.getText ()=Item2)area.append (你选择的是+Item2+Integer.toHexString(x)+n);if (t.getText ()=Item3)area.append (你选择的是+Item3+x+n);public static void main(String args)LX6_4 m=new LX6_4();m.setSize(400,300);/m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);m.addWindowListener(new WindowAdapter()/注册窗口事件侦听器public void windowClosing(WindowEvent e)System.exit(0););m.init();m.show();(3) 编译程序LX6_4.java。
限制150内