实验 图形用户界面1

更新时间:2024-04-13 12:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验 图形用户界面(1) 4学时

【实验目的】

1. 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2. 了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 【实验要求】

1. 掌握在容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。 2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 了解Java Swing 组件的使用方法。 5. 了解对话框的使用方法。 【实验内容】

一.创建图形用户界面

图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add 方法把组件加入到容器中。

1. 在Frame 中添加标签、按钮并使用网格布局

(1) 程序功能:在Frame 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。

(2) 编写LX6_1.java 程序文件,源代码如下。 import java.awt.*; import javax.swing.*;

public class LX6_1{ JFrame f; JLabel l1; JButton b1;

public void init(){ f = new JFrame();

f.setLayout(new GridLayout(3,2)); f.setTitle(\); f.setSize(300,200);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

l1=new JLabel(\标签1\); f.add(l1);

b1=new JButton(\按钮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 程序文件,源代码如下。 import java.awt.*;

import java.awt.Color; import javax.swing.*;

public class LX6_2{ JFrame 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(\,Font.PLAIN,20));

JLabel l=new JLabel(\这是Frame容器中的标签\,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(\, new JButton(\北\)); panel1.add(\, new JButton(\南\)); panel1.add(\, new JButton(\东\)); panel1.add(\, new JButton(\西\));

panel1.add(\, new JLabel(\这是在 Panel1 面板 中部添加的标签\));

JPanel panel2=new JPanel(); f.add( panel2);

panel2.setLayout(new GridLayout(3,1)); //设置网格布局

1

}

JComboBox c=new JComboBox ();//创建下拉式列表 c.addItem(\北京\); c.addItem(\上海\); c.addItem(\天津\);

JLabel l1=new JLabel(\这是在 Panel2 面板中的标签\); JButton b1=new JButton(\中的按钮\); 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 中能产生事件的组件叫做事件源,如按钮。如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。 1.单击按钮的事件处理程序

(1)程序功能:为按钮编写单击事件处理方法。当用户用鼠标单击按钮时,标签记录按下的次数。

(2)编写LX6_3.java 程序文件,源代码如下(代码中的按钮与标签使用的是java.awt中的组件,感受与javax.swing中的组件的区别)。 import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class LX6_3 implements ActionListener { // 实现动作事件监听接口public void init() { JFrame f; Label l;

2

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 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) 程序功能:在Frame上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的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);//创建文本区

JScrollPane scroll = new JScrollPane(area);//文本区加滚动条 String Item[]={\进制\,\进制\,\进制\,\进制\}; JCheckBox cb[]=new JCheckBox[5];

JRadioButton radio[]=new JRadioButton[5]; JLabel l=new JLabel(\输入10 进制数\);

3

JTextField TF=new JTextField(6);//创建单行文本框 public void init() {

this.setLayout(new FlowLayout()); add(l);add(TF); add(scroll); add(new JLabel(\请选择进制:\));

for(int i=0; i<4; i++) { //创建复选框 cb[i]=new JCheckBox(Item[i]); add(cb[i]);

cb[i].addItemListener(this);

}

ButtonGroup group=new ButtonGroup();//创建单选按钮 add(new JLabel(\请选择进制:\)); for(int i=0; i<4; i++) {

radio[i]=new JRadioButton(Item[i]); add(radio[i]);

radio[i].addActionListener(this); group.add(radio[i]); } }

public void actionPerformed(ActionEvent e){ int x=Integer.parseInt(TF.getText());

JRadioButton t=(JRadioButton)e.getSource();

if (t.getText()==Item[0])

area.append (\你选择的是\+t.getText()+ Integer.toBinaryString(x)+\); if (t.getText()==Item[1])

area.append (\你选择的是\+t.getText()+ Integer.toOctalString(x)+\); if (t.getText()==Item[2])

area.append (\你选择的是

\+t.getText()+Integer.toHexString(x)+\); if (t.getText()==Item[3]) area.append (\你选择的是\+t.getText()+x+\); }

public void itemStateChanged(ItemEvent e) { JCheckBox t=(JCheckBox)e.getSource();; int x=Integer.parseInt(TF.getText());

if (t.getText ()==Item[0])

area.append (\你选择的是\+Item[0]+ Integer.toBinaryString(x)+\); if (t.getText ()==Item[1])

area.append (\你选择的是\+Item[1]+ Integer.toOctalString(x)+\);

4

if (t.getText ()==Item[2])

area.append (\你选择的是

\+Item[2]+Integer.toHexString(x)+\); if (t.getText ()==Item[3])

area.append (\你选择的是\+Item[3]+x+\); }

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。

5

if (t.getText ()==Item[2])

area.append (\你选择的是

\+Item[2]+Integer.toHexString(x)+\); if (t.getText ()==Item[3])

area.append (\你选择的是\+Item[3]+x+\); }

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。

5

本文来源:https://www.bwwdw.com/article/65sp.html

Top