实验七 基于SWING的图形用户界面GUI设计

合集下载

Swing图形用户界面(GUI)设计

Swing图形用户界面(GUI)设计
18
9.5 标签
JLabel常用的方法
• void setText(String text): 定义该组件所能显示的文字。 • void setIcon(Icon icon): 定义该组件所能显示的图形。 • void setIconTextGap(int gap):定义文字和图形间的距离,单位 为像素。 • void setHorizontalAlignment(int alignment): 设置标记内容的 水平对齐方式(LEFT,CENTER,RIGHT,LEADING和 TRAILING)。 • void setHorizontalTextPosition(int alignment): 设置标记内文 字相对于图形的水平位置 (LEFT,CENTER,RIGHT,LEADING和TRAILING)。 • void setVerticalAlignment(int alignment): 设置标记内容的垂 直对齐方式(TOP,CENTER和BOTTOM)。 • void setVerticalTextPosition(int alignment): 设置标记内文字相 对于图形的垂直对齐方式(TOP,CENTER和BOTTOM )。 19
6
例9-1
7
9.2 文本与字体
本章9.1节的“Hello World”程序中演示了默认字体字符 串的显示。 但是我们常常需要使用不同的字体,通过setFont()方法可 以改变字体。 可以根据字体名来指定字体。 想找出某个计算机上的可用字体,你可以通过调用 GraphicsEnvironment类的getAvaiilableFamilyNames 方法实现。 该方法返回包含所有可用字体名的字符串数组。 GraphicsEnvironment类描述了用户系统上的图形环境, 可以使用静态方法getLocalGraphicsEnviroment来得到 该类的一个实例。 下面是字体显示的例子:

Swing图形用户界面(GUI)设计

Swing图形用户界面(GUI)设计
第9章 Swing图形用户界面(GUI)设计 [内容提要] 本章讲述Java GUI的发展以及如何使用 强大的Java 2 Swing库进行GUI程序设计, 包括AWT和Swing的区别和联系、各种 常见组件和控件的使用。
1
9.1 Swing图形用户界面设计概述
SUN的AWT:Java处理图形用户界面的初始途 径。 AWT库处理图形的基本方法:把这些元素的创 建和行为交给目标平台上的本地GUI工具箱进 行处理。 理论上 “一次编写,随处运行”。 实际上“一次编写,随处调试”。 IFC(Internet Foundation Classes) Sun与Netscape合作开发出:Swing。
JMenuItem: 菜单项。 JPanel: 通用的轻量容器。 JPasswordField: 文本框(用来输入口令)。
4
JPopupMenu: 弹出式菜单。
JPopupMenu.Separator: 分隔线(弹出式菜单专用)。 JProgressBar: 进度条。 JRadioButton: 单选按钮。 JRadioButtonMenuItem: 单选菜单。 JScrollBar: 滚动条。
Swing的AWT关系
JApplet:ng.Applet的扩展版本。 JButton: 按钮或命令按钮。 JCheckBox: 复选框。 JCheckBoxMenuItem: 复选菜单项。 JComboBox: 组合框。 JComponent: Swing组件的基类。 JDialog: 对话框窗口的基类。 JLabel: 标签项。 JList: 列表框。 JMenu: 菜单。 JMenuBar: 菜单条。
8
例9-2
9
9.3 图形设计
Java 2D提供了和设备无关的坐标系统,它不仅 负责用户坐标和设备坐标的转换,还提供了一些 非常有用的二维绘图功能,包括几何图形、直线 式样、图像以及上一节的文本与字体处理。 一、Graphics2D Java2D的绘图环境是一个Graphics2D对象,他 源自于Graphics, 如果要使用Java2D的功能,需要将Graphics对象转 化为Graphics2D对象。

JAVA-SWING图形界面程序设计实验报告(附完整代码)

JAVA-SWING图形界面程序设计实验报告(附完整代码)

图形界面(GUI)程序设计一、课题内容和要求内容:设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果。

要求:学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法。

通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法。

二、设计思路分析class RMBtoDollar:主类,调用主函数。

class change:设置界面,并通过界面上的事件触发实现汇率转换。

三、概要设计public class RMBtoDollar{public static void main(String[] args);}class change extends JFrame implements MouseListener { JLabel l1, l2,l3;JTextField tf1, tf2;JButton b;double RMB, Dollar;public change();public void mousePressed(MouseEvent e);public void mouseClicked(MouseEvent e);public void mouseEntered(MouseEvent e);public void mouseExited(MouseEvent e);public void mouseReleaseed(MouseEvent e);//鼠标释放时进行转换}四、详细设计import java.awt.*;import java.awt.event.*;import javax.swing.*;public class RMBtoDollar {public static void main(String[] args) {new change();}}class change extends JFrame implements MouseListener { JLabel l1, l2,l3;JTextField tf1, tf2;JButton b;double RMB, Dollar;public change() {//添加组件和设置布局l1 = new JLabel("人民币/元:");l2 = new JLabel("美元/dollar:");l3=new JLabel("(汇率:6.17)");tf1 = new JTextField(12);tf2 = new JTextField(12);b = new JButton("转换");add(l1);add(tf1);add(l2);add(tf2);add(l3);add(b);setLayout(new FlowLayout(FlowLayout.CENTER));setTitle("人民币转换为美元");setBounds(300, 300, 300, 150);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);b.addMouseListener(this);//鼠标事件监视器}public void mousePressed(MouseEvent e) {if (tf2.getText() != null) {// tf2 test 默认初始设为空tf2.setText("");}}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseReleased(MouseEvent e) {if (tf1.getText() != null) {// 检查tf1 test 是否为空try {// 取异常RMB = Double.parseDouble(tf1.getText());// 字符转为double型Dollar = RMB / 6.17;//转换tf2.setText("" + Dollar);// 显示} catch (Exception ex) {tf1.setText("");// 如果输入不是数字,设为空}}}}五、测试数据及其结果分析1正常输入:2输入字符串不能转为double型时清空输入框:3结果:输出正常。

JAVA_Session07 基于Swing的 GUI程序设计2.ppt

JAVA_Session07 基于Swing的 GUI程序设计2.ppt
低级事件: KeyEvent(一个键被按下或释放) MouseEvent(鼠标键被按下、释放、移动或拖动) MouseWheelEvent(鼠标滚轮被转动) FocusEvent(某个组件获得或失去焦点) WindowEvent(窗口状态被改变)
版本 1.0
课程 7
幻灯片 6,共 24 张
Java 编程语言
版本 1.0
课程 7
幻灯片 3,共 24 张
Java 编程语言
Java中的事件处理方式
• 委派式事件处理(delegation)----个别的组件 将整个事件处理委托给特定的对象,当该组 件发生指定的事件时,就通知所委托的对象, 由这个对象来处理这个事件。这个受委托处 理事件的对象称为事件监听对象(event listener)
事件处理相关概念
• 事件(Event) – 一个对象,它描述了发生什么 事情
• 事件源(Event source) – 产生事件的组件
• 事件处理方法(Event handler) – 能够接收、 解析和处理事件类对象、实现和用户交互的 方法
• 事件监听器(Event listener)-调用事件处理方 法的对象
版本 1.0
课程 7
幻灯片 15,共 24 张
Java 编程语言
事件处理类和产生事件的类的关系
• 直接在本类里处理事件:
public class Test implements ActionListener {
… Button b=new Button(“Cancel”); b.addActionListener(this); public void actionPerformed(ActionEvent e) {
传递

Java语言试验7图形用户界面

Java语言试验7图形用户界面

一、实验目的1、掌握Java图形界面程序设计的基本思想和步骤。

2、掌握AWT包和Swing包的基本使用方法和区别。

3、掌握容器和布局的概念和使用。

4、掌握图形界面程序的事件处理机制。

二、实验内容及步骤1、界面设计任务一:容器JFrame的使用写窗体源代码源代码:package t1;import javax.swing.JFrame;import java.awt.Color;import javax.swing.JButton;public class FirstWindow extends JFrame{public static final int WIDTH= 300;public static final int HEIGHT= 200;public FirstWindow(){super();setSize WIDTH, HEIGHT);setTitle"First Window Class");this.getContentPane().setBackground(Color.red);setDefaultCloseOperation(JFrame DO_^OTHI^G_O^_C£OSE);}public static void main(String args[]) { FirstWindow win1=new FirstWindow(); winl.setVisible(true);win1.setDefaultCloseOperation(EXIT_ON_ CLOSE);}}写应用程序创建FirstWindow窗体对象,并使其显示。

运行结果:(ij l2_i l-irst Window Class 一□任务二:布局管理器LayoutManager(l)FlowLayout布局管理器①FlowLayout布局管理器的简单应用实例,代码如下: 源代码:package t2;import java.awt.*;import javax.swing.*;public class TestFlowLayout {public static void main(String args[]){JFrame f= new JFrame();f.setLayout(new FlowLayout());//设置为FlowLayout 布局Button b1=new Button("OK");Button b2=new Button("Open");Button b3=new Button("Close");f.add(b1);//添加按钮b1f.add(b2);//添加按钮b2f.add(b3);//添加按钮b3f.setSize(300,100);f.setVisible(true); )private static void setLayout(FlowLayout flowLayout) { // TODO Auto-generated method stub))②编译运行程序,查看结果。

实验7 图形用户界面之swing组件的使用_实验报告

实验7 图形用户界面之swing组件的使用_实验报告
计算机科学与技术学院实验报告
学生姓名
***
学号
***
成绩
系(院)别
计算机科学与技术学院
专业
计算机科学与技术
班级
***
课程名称
Java程序设计
任课教师
李冰
实验日期
***
实验序号
7
实验名称
图形用户界面之swing组件的使用
实验室
软三实验室
实验台号
***
指导教师
李冰
一、实验目的
1、掌握JFrame类的使用方法。
2、掌握swing包内组件类的使用方法。
二、实验内容(详见实验内容文档)
1、编写一个Java应用程序,输入学生的姓名,选择性别、籍贯及文化程度,单击“确定”按钮显示学生信息,单击“取消”按钮可以重新输入或选择学生信息。(使用swing组件实现)
2、正确或错误。
3、为按钮添加动作监听器接口ActionListener。
4、实现ActionListener接口中的方法。
实验步骤:
……
五、实验结果(包括设计效果、测试数据、运行结果等)
此处书写实验的测试数据及运行结果,或程序的运行效果等。
六、实验小结(包括收获、心得体会、注意事项、存在的问题及解决问题的方法、建议等)
此处书写本次实验你的收获,本次实验你有什么心得体会,实验中存在的问题及解决方法,实验中的注意事项等。
七、附录(包括作品、流程图、源程序及命令清单等)
此处书写本次实验的源程序或流程图等。
1、实验环境
Java SE Development Kit
四、实验设计方案(包括实验步骤、设计方案、算法描述或流程图等)
设计方案:

第八章 基于swing的图形用户界面

第八章 基于swing的图形用户界面

18
8.2.4 布局管理器
容器中组件的布局通常由Layout Manager控制。 Layout Manager负责决定容器的布局策略及容器内 每个组件的大小。 每个容器都由一个缺省的Layout Manager ,可通过 setLayout( )方法改变。 Java提供的布局管理器: FlowLayout BorderLayout GridLayout CardLayout GridBagLayout Box Layout
13
JFrame
是放置其他 Swing 组件的顶级容器,JFrame 组件用于在 Swing 程序中创建窗体 构造函数: JFrame() JFrame(String Title) 其组件必须添加至内容窗格,而不是直接添加至 JFrame 对象, frame.getContentPane().add(b); 其他方法:
AWT(Abstract Window Tookit):
用来处理图形最基本的方式,包括用来创建Java GUI各种组件 和事件处理机制。
Swing包:是对AWT的扩展,提供了丰富的组件,并且提供了独
立于运行平台的GUI构造框架。不依赖于特定的系统平台,对外提 供多样化的组件及外观,并且保持外观风格的一致。
/*第一个参数表示组件的对齐方式,第二个参数是组件之间的 横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/ //居左对齐,横向间隔和纵向间隔都是缺省值5个象素 //缺省的对齐方式居中对齐,横向和纵向间隔缺省为5个象素
20
BorderLayout Manager
是Window,Frame和Dialog的缺省布局管理器。 把容器分成5个区域:North,South,East,West和 Center,每个区域只能放置一个组件。如不指定组件的加入 部位,则默认加入到Center区。 各个区域的位置及大小如下图所示: 构造函数有:

JAVA实验报告 图形用户界面设计 GUI

JAVA实验报告 图形用户界面设计 GUI
在使用gui图形用户界面设计的过程中根据所需的控件加以编程即可好处是无需太多算法而且以上几个不同的窗体功能实现基本类似在本次实验中通过编写窗体控件熟悉了gui的设计和用法
实验报告
课程 专业班级 姓名
java 程序设计
实验项目 Leabharlann 内序号 学号图形用户界面成绩 指导教师 实验日期
2010-1-4
实验目的:
public Dial(JFrame frame,String title,boolean b){ super(frame,title,b); getContentPane().setLayout(new FlowLayout()); panel.add(text); panel.add(btn1); btn1.addActionListener(this); getContentPane().add(panel); pack(); } public void actionPerformed(ActionEvent event){ this.dispose(); } public String getSt(){ return text.getText(); } }
add(label); add(scr); } }
运行结果如图所示
2. 练习使用对话框。包括一个JLabel和两个JButton,按任何一个JButton都会产生一个输入对话框, 按确定后将输入内容在JLabel中显示出来
源代码如下: import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class frameTest{ public static void main(String args[]){ CFrame frame=new CFrame("Frame Test"); Container pane=frame.getContentPane(); pane.add(new leftPanel(),BorderLayout.WEST); pane.add(new rightPanel(),BorderLayout.EAST); frame.pack();

gui实验报告

gui实验报告

gui实验报告GUI实验报告一、引言Graphical User Interface(图形用户界面,简称GUI)是一种用户与计算机交互的方式,通过图形化的界面和用户友好的操作,使用户能够直观地使用计算机。

本实验旨在探究GUI的设计原理和应用,通过实际操作和观察,深入理解GUI的功能和优势。

二、实验目的1. 了解GUI的基本概念和原理;2. 学习使用GUI设计工具和编程语言;3. 掌握GUI的常见组件和布局方式;4. 实践GUI设计和开发过程。

三、实验过程在实验中,我们选择了Java语言和Swing库作为GUI设计和开发的工具。

首先,我们使用Eclipse IDE创建了一个Java项目,并添加了Swing库的依赖。

接下来,我们创建了一个主窗口,并在窗口中添加了各种GUI组件,如按钮、文本框、标签等。

通过设置组件的属性和监听器,我们实现了用户与程序的交互。

四、实验结果我们成功地创建了一个简单的GUI应用程序,该程序包含了一个登录界面。

用户可以在文本框中输入用户名和密码,并点击登录按钮进行验证。

程序会根据用户输入的内容进行判断,并给出相应的提示信息。

通过实验,我们发现GUI的设计可以大大提高用户的交互体验,使操作更加直观和便捷。

五、实验总结通过本次实验,我们深入了解了GUI的设计原理和应用。

GUI作为一种用户友好的交互方式,已经广泛应用于各个领域,如操作系统、应用软件等。

GUI的设计需要考虑用户的习惯和需求,合理布局和组织界面元素,使用户能够轻松地完成操作。

同时,GUI的开发过程需要掌握相应的工具和编程语言,如Swing、Java等。

通过不断练习和实践,我们可以提高GUI设计和开发的能力。

六、实验心得本次实验让我对GUI有了更深入的了解。

在设计GUI界面时,我学会了如何选择合适的布局方式,如流式布局、网格布局等。

同时,我也学会了如何使用监听器来实现用户与程序的交互。

通过实际操作,我发现GUI的设计需要注重用户体验,尽量简化操作步骤,提供直观的界面和友好的提示。

JavaSwing图形用户界面的设计与实现方法

JavaSwing图形用户界面的设计与实现方法

JavaSwing图形用户界面的设计与实现方法一、引言随着计算机技术的不断发展,图形用户界面(Graphical User Interface,GUI)在软件开发中扮演着越来越重要的角色。

作为用户与软件之间的沟通桥梁,GUI的设计与实现至关重要。

本文将介绍JavaSwing图形用户界面的设计与实现方法,帮助开发人员更好地利用JavaSwing创建出功能强大、用户友好的GUI界面。

二、Swing概述JavaSwing是Java提供的一套GUI组件库,它基于Java AWT (Abstract Window Toolkit)构建而成,相对于AWT,Swing提供了更加丰富的组件和更高的灵活性。

Swing拥有独立于平台的外观,通过Java代码实现GUI界面的构建和事件处理。

使用Swing可以快速实现各种界面风格,并且易于调整和扩展。

三、Swing组件的使用1. 容器类组件:容器类组件是其他组件的父容器,对应于应用程序的窗口或面板,常用的容器类组件有JFrame、JPanel、JDialog等。

通过创建容器类组件,可以将其他组件添加到容器中并管理和布局。

2. 基本组件:基本组件是构建GUI界面的基本元素,常用的基本组件有JButton、JLabel、JTextField等。

它们可以用于实现用户输入、数据展示、按钮点击等交互操作。

3. 高级组件:高级组件是Swing提供的一些特殊功能的组件,如JTable、JTree、JFileChooser等。

它们可以用于展示表格、树状结构、文件选择等复杂的用户交互功能。

四、事件处理为了响应用户的操作,GUI界面需要进行事件处理。

在JavaSwing中,事件处理分为两个阶段:事件生成和事件响应。

当用户与界面进行交互时,会生成相应的事件,如按钮点击、鼠标移动等。

开发人员需要实现事件的监听器,并在事件发生时触发相应的操作。

五、界面布局界面布局是指组件在容器中的排列方式。

在Swing中,界面布局主要通过布局管理器(Layout Manager)实现。

java图形用户界面设计实验总结

java图形用户界面设计实验总结

Java图形用户界面设计实验总结1. 简介本文档是关于Java图形用户界面(GUI)设计实验的总结。

我们将对Java GUI 的基本概念和原理进行介绍,并提供一些实验总结和经验分享。

Java GUI是一种用于创建用户友好界面的技术,在开发各种应用程序时非常重要。

2. Java GUI的基本概念和原理2.1 Java GUI库Java提供了一些库来帮助开发人员创建GUI应用程序。

其中最常用的库是Java Swing和JavaFX。

Swing提供了一组类和方法,用于创建和管理各种GUI组件,例如按钮、文本框、标签等。

JavaFX是一个更现代化的GUI库,提供了更好的图形渲染和动画效果。

2.2 GUI组件Java GUI应用程序通常由一系列GUI组件组成。

最常见的GUI组件包括:•按钮(Button):用于触发各种操作;•标签(Label):用于展示文本信息;•文本框(TextField):用于输入文本;•列表框(ListBox):用于显示一个选项列表;•组合框(ComboBox):同时兼具列表框和文本框的功能;•复选框(CheckBox):用于选择一个或多个选项;•单选按钮(RadioButton):用于从一组选项中选择一个。

2.3 事件处理Java GUI应用程序通常需要对用户的操作做出响应。

为此,需要使用事件处理机制。

事件处理机制通常由两个主要部分组成:事件源和事件监听器。

事件源可以是任何GUI组件,例如按钮、文本框等。

事件监听器是一个类,用于响应和处理特定事件。

3. 实验总结和经验分享在完成Java GUI设计实验时,我得出了以下总结和经验分享:•熟悉GUI组件的使用:在开始实验之前,我花了一些时间学习和理解不同GUI组件的使用方法。

这让我能够更好地选择和使用适当的组件来实现我的GUI应用程序。

•构建用户友好的界面:一个好的GUI应用程序应该是用户友好的。

在实验中,我学会了如何通过合理的布局、适当的颜色和字体选择来创建一个用户友好的界面。

第5章 基于Swing的图形化用户界面_1布局管理器与事件处理 - 全

第5章 基于Swing的图形化用户界面_1布局管理器与事件处理  - 全
AWT ( 重量级组件)
通过 java.awt 包
创建 GUI
容器 组件 布局管理器
包含 AWT 容器组件
以图形表示的对象允许用户交互
AWT 包 含 内 容
定义 GUI 组件的位置
使用 AWT 图形方法相对于窗口绘制图形
图形和绘制方法
字体 事件
创建并构造用于选择新字体的对象 用于用户和系统交互
AWT类结构
框架JFrame


JFrame是放置其他Swing组件的顶级容器。
JFrame用于在Swing程序中创建顶层窗口。 默认情况下,框架的尺寸是没有实际意义的0X0像素。 为了设定合适的框架大小,要调用框架的setSize方法。

默认情况下,框架在创建时是不可见的。为了显示框架 ,要调用框架的setVisible方法。
AWTEvent Font Component ng.object Graphics MenuComponent 布局管理器类 Window Frame Container
Panel
Applet
Swing概述
通过 Swing (轻量级组件,纯Java组件) Javax.swing 包 创建 GUI

默认情况下,当用户关闭一个框架时,该框架会隐藏起
来,程序不会终止,调用setDefaultCloseOperation。
JFrame应用示例
创建具有以下特征的窗口: • 自定义窗口的标题; • 窗口的大小不可变(300,200); • 窗口居中显示。
标题
最大化按钮 失效
JFrame应用示例
import javax.swing.*; class App5_1 { public static void main(String[] args) { JFrame f=new JFrame("第一个Java窗口"); //创建容器 f.setSize(300,200); //设置容器大小 f.setLocationRelativeTo(null) ; //框架居中 f.setVisible(true); //设置框架可见性 f.setResizable(false); //设置不能改变框架大小 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Java图形用户界面设计(GUI),辽宁工程技术大学,理学院

Java图形用户界面设计(GUI),辽宁工程技术大学,理学院

辽宁工程技术大学上机实验报告实验内容:(1)设计一个简易计算器,在“操作数”标签右侧的两个文本框输入操作数,当单击“+,-,*,/”按钮时,对两个操作数进行运算并将结果填到“结果”标签右侧的文本框中。

具体程序如下:import java.awt.event.*;import javax.swing.*;class Compute extends JFrame{public Compute(){final String a,b;JFrame Compute = new JFrame("简单计算器");JLabel lb1 = new JLabel("操作数:");JLabel lb2 = new JLabel("操作数:");JLabel lb3 = new JLabel("结果:");final JTextField txt1 = new JTextField();a=txt1.getText();final JTextField txt2 = new JTextField();b=txt2.getText();final JTextField txt3 = new JTextField();JButton jb1 = new JButton("+");JButton jb2 = new JButton("-");JButton jb3 = new JButton("*");JButton jb4 = new JButton("/");JButton jb5 = new JButton("清除");Compute.setBounds(100,100,480,215);Compute.setVisible(true);Compute.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Compute.setLayout(null);Compute.add(lb1);Compute.add(lb2);Compute.add(lb3);Compute.add(txt1);Compute.add(txt2);Compute.add(txt3);Compute.add(jb1);Compute.add(jb2);Compute.add(jb3);Compute.add(jb4);Compute.add(jb5);lb1.setBounds(50,40,100,20);lb2.setBounds(50,80,100,20);lb3.setBounds(50,120,100,20);txt1.setBounds(100,40,150,20);txt2.setBounds(100,80,150,20);txt3.setBounds(100,120,150,20);jb1.setBounds(300,30,50,20);jb2.setBounds(300,60,50,20);jb3.setBounds(300,90,50,20);jb4.setBounds(300,120,50,20);jb5.setBounds(375,70,70,30);jb1.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e) {double x=Double.valueOf(txt1.getText());double y=Double.valueOf(txt2.getText());txt3.setText(Double.toString(x+y));}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {} });jb2.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e) {Double x=Double.valueOf(txt1.getText());Double y=Double.valueOf(txt2.getText());txt3.setText(Double.toString(x-y));}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});jb3.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e) {Double x=Double.valueOf(txt1.getText());Double y=Double.valueOf(txt2.getText());txt3.setText(Double.toString(x*y));}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});jb4.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e) {Double x=Double.valueOf(txt1.getText());Double y=Double.valueOf(txt2.getText());txt3.setText(Double.toString(x/y));}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});jb5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){txt1.setText("");txt2.setText("");txt3.setText("");txt1.requestFocus();}});}public static void main(String args[]){Compute cp=new Compute();}}运行结果如下:如图所示3.2*4.6=7.8如图所示22.4/6.2=3.612903225806451(2)编写文本移动程序,窗口中有两个文本区和两个按钮,文本区分别位于窗口的左边和右边区域,2个按钮位于窗口的中间区域,当单击“→”按钮时,将左边文本区选中的内容添加到右侧的文本区的末尾。

实验七 图形用户界面设计

实验七  图形用户界面设计

《Java语言程序设计》实验报告private JButton button_1,button_2,button_add,button_clear;public Simcal(){super("Calculator");this.setBounds(300, 240, 320, 90);this.setResizable(false);this.setBackground(java.awt.Color.lightGray);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));text = new JTextField("",27);text.setHorizontalAlignment(JTextField.RIGHT);text.setEditable(false);caretUpdate(null);this.getContentPane().add(text);text.addCaretListener(this);//JPanel panel = new JPanel(new GridLayout(1,4));//this.getContentPane().add(panel);button_1 = new JButton("1");button_1.addActionListener(this);//panel.add(button_1);this.getContentPane().add(button_1);button_add = new JButton("+");button_add.addActionListener(this);//panel.add(button_add);this.getContentPane().add(button_add);button_2 = new JButton("2");button_2.addActionListener(this);//panel.add(button_2);this.getContentPane().add(button_2);button_clear = new JButton("C");button_clear.addActionListener(this);//panel.add(button_clear);this.getContentPane().add(button_clear);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==button_1){text.setText(text.getText()+"1");}if(e.getSource()==button_add){text.setText(text.getText()+"+");}if(e.getSource()==button_2){text.setText(text.getText()+"2");}if(e.getSource()==button_clear){text.setText("");}}public void caretUpdate(CaretEvent e){}public static void main(String arg[]){new Simcal();}}运行结果:(2)计算器如果时间允许,实现计算器的加、减、乘、除等基本运算,参考如下图形界面。

基于Swing的图形用户界面设计方案

基于Swing的图形用户界面设计方案
(JFrame)、对话框(JDialog)、小应用程序(Java Applet)可以和操作系统交互 信息。轻组件必须在这些容器中绘制自己,习惯上称这些容器为SWING的底层容器。
.
10.2 JFrame窗体
javax.swing包中的JFrame类是java.awt包中Frame类的子类,因此 JFrame类其子类创建的对象是窗体。
图10.1 JComponent类的部分子类以及JFrame类和JDialog 类
.
容器类(Container)和组件类(Component)
Java把由Component类的子类或间接子类创建的对象称为一个组件;把由 Container的子类或间接子类创建的对象称为一个容器。
◆ 可以向容器添加组件。Container类提供了一个public方法add(),一个容 器可以调用这个方法将组件添加到该容器中。
容器可以使用方法
setLayout(布局对象);
来设置自己的布局。 对于JFrame窗口,默认布局是BorderLayout布局。
.
1.FlowLayout布局
FlowLayout 类 的 对 象 称 为 FlowLayout 布 局 。 FlowLayout 类 的一个常用构造方法如下:
◆ FlowLayout();构造方法可以创建一个居中对齐的布局对象,如:
第10章 基于Swing的图形用户界面设计
本章导读 ☆ AWT组件与SWING组件 ☆ JFrame窗体、菜单组件、布局设计 ☆ 中间容器、文本组件 ☆ 按钮与标签组件、复选框与单选按钮组件 ☆ 列表组件、表格组件、树组件和进度条组件 ☆ 窗口事件、鼠标事件、焦点事件和键盘事件 ☆ 对话框 ☆ AWT线程与计时器 ☆ MVC设计模式 ☆ 发布应用程序

java实验 JAVA Swing 图形用户界面和对话框

java实验 JAVA Swing 图形用户界面和对话框

JAVA实验报告课程名称 java实验实验名称 JAVA Swing 图形用户界面和对话框学院__计算机学院__专业班级__软件__姓名__ ____ 学号_ __实验日期:2015年4月30 日一.实验目的(1)学习处理ActionEven事件;(2)学习使用布局类;(3)学习焦点、鼠标和键盘事件;(4)学习使用对话框。

二.实验内容(-)实验题目一:算术测试,编写一个算术测试小软件,用来训练小学生的算术能力。

1.要点分析:程序有三个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。

ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面给出题目的答案;MainClass是软件的主类。

2.程序源代码:package算术测试;public class MainClass {public static void main(String args[]){ComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算术测试");frame.setBounds(100,100,650,180);}}package算术测试;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame {JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang=new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout());menubar=new JMenuBar();choiceGrade=new JMenu("选择级别");grade1=new JMenuItem("幼儿级别");grade2=new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);textOne=new JTextField(5);//创建文本框,其可见字符长为5textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20));message=new JLabel("你还没有回答呢");getProblem=new JButton("获取题目");giveAnswer=new JButton("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("="));add(textResult);add(giveAnswer);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("anwser");giveAnswer.setActionCommand("answer");teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);getProblem.addActionListener(teacherZhang);giveAnswer.addActionListener(teacherZhang);textResult.addActionListener(teacherZhang);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}package算术测试;import java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener{int numberOne,numberTwo;String operator="";boolean isRigth;Random random;int maxInteger;JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher(){random=new Random();}public void setMaxInteger(int n){maxInteger=n;}public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(str.equals("getProblem")){numberOne=random.nextInt(maxInteger)+1;//1~最大整数之间的随机数numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();//获取0~1之间的随机数if(d>=0.5)operator="+";elseoperator="-";textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}else if(str.equals("answer")){String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo)message.setText("你回答正确");elsemessage.setText("你回答错误");}else if(operator.equals("-")){if(result==numberOne-numberTwo)message.setText("你回答正确");elsemessage.setText("你回答错误");}}catch(NumberFormatException ex){message.setText("请输入数字字符");}}}public void setJTextField(JTextField... t){ textOne=t[0];textTwo=t[1];textResult=t[2];}public void setJLabel(bel){operatorLabel=label[0];message=label[1];}}3.实验结果:4.实验后练习:(1)模仿本实验的代码,再增加小学生级别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七基于SWING的图形用户界面GUI设计
一、实验目的
1. 掌握如何使用布局管理器对组件进行管理。

2. 掌握图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法
3. 熟悉Java 的事件处理机制,掌握焦点事件、鼠标事件和键盘事件的处理。

二、实验内容
1.设计一个Windows风格的日历表,通过表格组件和下拉列表组件进行日历的显示。

2.编写华容道智力游戏。

通过焦点事件控制人物的颜色,通过键盘事件和鼠标事件来实现人物的移动。

三、实验方案
1. 日历表
要求程序中有一个下拉列表,该列表添加了代表年份的选项,当用户在列表中选择某项后,程序通过表格显示某年各个月份的日历。

具体实验步骤由学生自行设计完成。

2. 华容道智力游戏
华容道是我们很熟悉的一个传统智力游戏。

要求首先编写一个按钮的子类,该子类创建的对象代表华容道中的人物。

通过焦点事件控制人物的颜色,当人物获得焦点时颜色为蓝色,当失去焦点时颜色为灰色。

我们通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动,当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按键盘上的“↓”键,该人物向下移动。

向左、向右和向上的移动原理类似。

具体实验步骤由学生自行设计完成。

四、实验提示
1.使用Jtable可以创建一个表格对象。

可以使用Jtable的构造方法Jtable(Object data[][],Object columnName[])创建表格,表格的视图将以行和
列的形式显示数组data每个单元中对象的字符串。

也就是说,表格视图中对应着data单元中对象的字符串表示。

参数columnName用来指定表格的列名。

用户在表格单元中输入的数据都被认为是一个Object对象,用户通过表格视图对表格单元中的数据进行编辑,以修改二维数组data中对应的数据。

在表格视图中输入或修改数据后,需按Enter键或用鼠标单击表格的单元格确定所输入或修改的结果。

当表格需要刷新显示时,让表格调用repaint()方法。

2.使用JcomboBox无参数构造方法可以创建一个不含有任何选项的下拉列表,该列表可以调用addItem(String item)添加选项。

注意:当下拉列表还没有包含任何选项时,不要给其注册ItemEvent时间监视器,否则程序运行时会抛出异常。

3.在处理鼠标事件时,程序经常关心鼠标在当前组件坐标系中的位置。

鼠标事件调用getX()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的x坐标;鼠标事件调用getY()方法返回触发当前鼠标事件时鼠标指针在事件源坐标系中的y坐标;
4.组件可以触发焦点事件。

组件可以使用addFocustListener(FocusListener listener)方法增加焦点事件监视器。

当组件具有焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。

创建监视器的类必须实现FocusListener接口,该接口有两个方法:public void focusGained(FocusEvent e)
public void focusLost(FocusEvent e)
当组件从无输入焦点变成有输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法focusLost(FocusEvent
e)
5.当一个组件处于激活状态时,组件可以成为触发KeyEvent事件的事件源。

当某个组件处于激活状态时,用户敲击键盘上一个键就导致这个组件触发KeyEvent事件。

五、实验结果
编写源程序并上机调试通过,根据实验过程填写实验报告,并上交源程序代码。

相关文档
最新文档