实验 图形用户界面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
正在阅读:
实验 图形用户界面104-13
河北省保定市2017-2018学年高三上学期11月高考摸底考试化学试题03-19
特殊机构及产品证券账户业务指南05-03
2022年七年级数学上册 第二章 整式的加减 2.2 整式的加减(2)去括04-16
焊膏存储及使用规范01-09
三角函数解三角形题型归类练习06-14
行列式的计算技巧和方法总结04-12
中国稀土资源概况01-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 用户界面
- 图形
- 实验
- 会计继续教育测试题及参考答案2018
- 四:固定资产
- 金工实习重点复习资料
- RTK技术在数字测图中的应用研究
- 研发部门关于日报和周报的规定
- 2015年12月09日1640524593的初中数学组卷八上几何难题
- 青岛版六年级科学下册实验教学计划
- 人教版四年级语文下册第三四单元导学案
- 植物组织培养实验指导书
- 高思3年级·5和差倍问题(一)(应用题第2讲)
- 幼儿园集团化办园工作实施方案 1doc
- 领导干部不违规收送红包礼金承诺书
- 某省财政项目跟踪审计投标方案
- 厨师考核管理办法
- 地貌期末复习1
- 2018年高考数学分类汇编复数、向量等7个板块试题及答案详解
- 技术合同书填写中的注意事项
- JAVA POI通用工具类
- 制冷系统加氨安全管理规定
- 道路运输企业安全标准化达标考核考评员试题及答案