实验七 基于SWING的图形用户界面GUI设计
- 格式:doc
- 大小:34.50 KB
- 文档页数:2
图形界面(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结果:输出正常。
一、实验目的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))②编译运行程序,查看结果。
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图形用户界面的设计与实现方法一、引言随着计算机技术的不断发展,图形用户界面(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图形用户界面设计实验总结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应用程序应该是用户友好的。
在实验中,我学会了如何通过合理的布局、适当的颜色和字体选择来创建一个用户友好的界面。
辽宁工程技术大学上机实验报告实验内容:(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)计算器如果时间允许,实现计算器的加、减、乘、除等基本运算,参考如下图形界面。
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)模仿本实验的代码,再增加小学生级别。
实验七基于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事件。
五、实验结果
编写源程序并上机调试通过,根据实验过程填写实验报告,并上交源程序代码。