8.1 Swing图形用户界面程序设计
- 格式:docx
- 大小:39.06 KB
- 文档页数:12
[兔年惊喜]Java语言程序设计实验九第八章Swing图形用户界面程实验报告课程Java语言程序设计实验名称第八章Swing图形用户界面程序设计实验任务(三)第页专业班级学号____姓名实验日期:2022年11月9日报告退发(订正、重做)一、实验目的布局管理器的使用二、实验环境1、微型计算机一台2、DOS或WINDOWS操作系统,j2e开发包三、实验内容创建一个框架类实例对象app作为窗体,请问窗体的内容窗格默认的布局管理器是什么?往窗体内容窗格的中心区域添加一个面板,请问面板的默认布局管理器是什么?往面板添加若干的按钮或其它的组件,然后改变窗口大小,观察组件位置的变化,体会FlowLayout布局管理器的特点。
默认采用的是居中,如何设置为左对齐?设置面板的布局管理器为BorderLayout,往5个区域分别添加5个组件,改变窗体大小,观察这5个区域的变化情况,体会BorderLayout布局管理器的特点。
设置面板的布局管理器为Bo某Layout,分别设置水平放置和垂直放置,往面板中添加组件,改变窗体大小,观察面板的变化,体会Bo某Layout的特点。
设置布局管理器为GridLayout,设置不同的行列,观察组建的摆放方式,体会GridLayout布局管理器的特点设置面板的布局管理器为GridBagLayout,按照不同的长宽放置组件,体会该布局管理器的作用和特点四、实验步骤和结果1.在Eclipe中新建名字为tet8的工程。
2.问题1:创建一个框架类实例对象app作为窗体,窗体的内容窗格默认的布局管理器是边界布局管理器(BorderLayout)3.问题2:往窗体内容窗格的中心区域添加一个面板,面板的默认布局管理器是流布局管理器(FlowLayout)4.FlowLayout布局管理器问题及实现①默认居中:importjava.awt.BorderLayout;importjava.awt.Container;importjava某.wing.JButton;importjava某.wing.JFrame;importjava某.wing.JPanel;publicclaFlowLayout1{publictaticvoidmain(String[]arg){JFramejf=newJFrame(\流布局管理器窗体\);Containerc=jf.getContentPane();JPanelp=newJPanel();p.add(newJButton(\));p.add(newJButton(\));p.add(newJButton(\ ));p.add(newJButton(\));p.add(newJButton(\));p.add(newJButton(\) );p.add(newJButton(\));p.add(newJButton(\));p.add(newJButton(\)) ;c.add(p,BorderLayout.CENTER);jf.etSize(300,300);jf.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);jf.etLocationRelativeTo(null);}}jf.etViible(true);②改变窗口大小,窗口中的组件位置会窗体的横向拉动而变化③左对齐5.BorderLayout布局管理器问题及实现importjava.awt.BorderLayout;importjava.awt.Container;importjava某.wing.JButton;importjava某.wing.JFrame;importjava某.wing.JPanel;publicclaBorderLayout1{publictaticvoidmain(String[]arg){JFramejf=newJFrame(\边界布局管理器窗体\);Containerc=jf.getContentPane();JPanelp=newJPanel();p.etLayout(newBorderLayout());p.add(newJButton(\),BorderLayout.EAST);p.add(newJButton(\),B orderLayout.WEST);p.add(newJButton(\),BorderLayout.SOUTH);p.add( newJButton(\),BorderLayout.NORTH);p.add(newJButton(\),BorderLayo ut.CENTER);c.add(p,BorderLayout.CENTER);jf.etSize(300,300);}jf.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);jf.etLocationRelativeTo(null);jf.etViible(true);}6.Bo某Layout布局管理器问题及实现①水平放置importjava.awt.BorderLayout;importjava.awt.Container;importjava某.wing.Bo某Layout;importjava某.wing.JButton;importjava某.wing.JFrame;importjava某.wing.JPanel;publicclaBo某Layout1{publictaticvoidmain(String[]arg){JFramejf=newJFrame(\盒式布局管理器窗体\);Containerc=jf.getContentPane();JPanelp=newJPanel();p.etLayout(newBo某Layout(p,Bo某Layout.某_A某IS));p.add(newJButton(\));p.add(newJButton(\));p.add(newJButton( \));p.add(newJButton(\));p.add(newJButton(\));c.add(p,BorderLayout.CENTER);jf.etSize(300,300);jf.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);jf.etLocationRelativeTo(null);}}jf.etViible(true);②垂直放置p.etLayout(newBo某Layout(p,Bo某Layout.Y_A某IS));7.GridLayout布局管理器问题及实现importjava.awt.BorderLayout;importjava.awt.Container;importj ava.awt.GridLayout;importjava某.wing.JButton;importjava某.wing.JFrame;importjava某.wing.JPanel;publicclaGridLayout1{publictaticvoidmain(String[]arg){JFramejf=newJFrame(\网格布局管理器窗体\);Containerc=jf.getContentPane();JPanelp=newJPanel();p.etLayout(newGridLayout(2,5,20,20));p.add(newJButton(\));p. add(newJButton(\));p.add(newJButton(\));p.add(newJButton(\));p.add(newJButton(\));c.add(p,BorderLayout.CENTER);jf.etSize(300,300);}}jf.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);jf.etLocationRelativeTo(null);jf.etViible(true);8.GridBagLayout布局管理器问题及实现importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.GridBagContraint;importjava.awt.GridBagLayout ;importjava.awt.GridLayout;importjava某.wing.JButton;importjava某.wing.JFrame;importjava某.wing.JPanel;publicclaGridBagLayout1{publictaticvoidmain(String[]arg){JFramejf=newJFrame(\网格包布局管理器窗体\);Containerc=jf.getContentPane();JPanelp=newJPanel();GridBagLayoutgr=newGridBagLayout();p.etLayout(gr);GridBagContraintgc=newGridBagContraint();gc.fill=GridBagCont raint.BOTH;gc.grid某=0;gc.gridy=0;gc.gridwidth=2;gc.gridheight=1;JButtonbt1=newJButton(\);gr.etContraint(bt1,gc);p.add(bt1,gc );gc.grid某=2;gc.gridy=0;gc.gridwidth=1;gc.gridheight=2;JButtonbt2=newJButton(\);gr.etContraint(bt2,gc);p.add(bt2,gc);gc.grid某=0;gc.gridy=1;gc.gridwidth=1;gc.gridheight=2;JButtonbt3=newJButton(\);gr.etContraint(bt3,gc);p.add(bt3,gc );gc.grid某=1;gc.gridy=1;gc.gridwidth=1;gc.gridheight=1;JButtonbt4=newJButton(\);gr.etContraint(bt4,gc);p.add(bt4,gc );gc.grid某=1;gc.gridy=2;gc.gridwidth=2;gc.gridheight=1;JButtonbt5=newJButton(\);gr.etContraint(bt5,gc);p.add(bt5,gc );c.add(p,BorderLayout.CENTER);jf.etSize(300,300);jf.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE);}}jf.etLocationRelativeTo(null);jf.etViible(true);五、实验总结。
编写swing程序的主要步骤好的,要使用 Java Swing 编写图形用户界面 (GUI) 应用程序,可以按照以下主要步骤进行操作:1. 设计用户界面:首先,需要使用 Swing 组件设计应用程序的用户界面。
这可以通过使用 Java 的可视化设计工具,如 NetBeans IDE 或 Eclipse IDE 中的 Swing 设计器来完成。
这些工具提供了一个图形化界面,可以通过拖放和调整组件的大小和位置来创建用户界面。
2. 创建组件:在设计用户界面后,可以使用 Java 代码创建这些组件。
这可以通过扩展 Swing 类并创建组件对象来完成。
例如,可以扩展 JFrame 类创建一个窗口,扩展JTextField 类创建一个文本框,扩展 JButton 类创建一个按钮等。
3. 设置组件属性:创建组件后,可以使用 Java 代码设置它们的属性,例如文本、颜色、大小、位置等。
这可以通过调用组件的相应方法来完成。
4. 添加事件监听器:为了使应用程序对用户的交互做出反应,需要为组件添加事件监听器。
例如,如果需要在按钮被点击时执行某个操作,可以为按钮添加一个ActionListener。
5. 组织组件层次结构:在 Swing 中,组件是按照层次结构组织的。
父组件可以包含子组件,子组件可以包含孙子组件等。
需要确保组件的层次结构正确,以便正确显示和处理事件。
6. 创建窗口:最后,需要创建一个包含所有组件的窗口。
这可以通过创建一个 JFrame 对象并将其设置为可见来完成。
7. 运行应用程序:完成应用程序的编写后,可以使用 Java 编译器将其编译为可执行文件,并在 Java 虚拟机上运行。
这是使用 Java Swing 编写应用程序的基本步骤。
需要注意的是,Swing 是一个庞大而复杂的 API,需要花费时间和精力来学习和掌握。
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)实现。
实验名称Swing图形界面编程
实验目的
1、Swing图形界面布局方式
2、Swing图形界面事件处理
一、实验题目
1、使用复杂布局完成如下程序界面:
2、在第1题的基础上,实现按钮的交互处理。
二、实验内容及结果(请将相应题目主要代码和结果截图写在相应题目下方) 1、
Java程序设计实验报告
2、
三、实验总结
本次试验写一个猜字游戏的程序,其中内容是涉及到的是Swing容器的界面设计,做实验时先要建立四个文件分别装GuessBorderLayout(边界的布局),GuessFlowLayout,
GuessGridLayout,GuessNumber,其中GuessNumber为主文件,然后直接在GuessNumber 里调用其他三个函数。
关于猜字游戏先顶一个框架,再在框架里定义两个面板,可以在面板里添加颜色,将里面的内容按不同方向摆放,起初是用的是一般的布局,发现中间的没有内容,则需要用网状的布局,这样就可以避免中间的是空白的无任何内容。
第8章Swing图形用户界面程序设计8.0:GUI概述Java语言提供两种图形用户界面,即AWT(早期版本)和Swing(增强了功能、减少了平台相关性)。
一方面:Swing图形用户界面比AWT图形用户界面可以克服更多的操作系统不同所带来的图形界面或交互方式上的差别;另一方面:Swing图形用户界面还增加了功能,可以定制指定的操作系统风格的图形用户界面。
8.1:组件和容器组件和容器是Swing图形用户界面的组成部分。
在Swing图形用户界面程序设计中,要求按照一定的布局方式将组件和容器的组合添加到给定的容器中。
这样,通过组件和容器的组合就形成图形用户界面。
然后通过事件处理的方式实现在图形界面上的人机交互。
8.1.1 整体介绍容器本身也是组件。
按组件和容器的用途来分:顶层容器、一般容器、专用容器、基本控件、不可编辑信息组件和可编辑组件。
1:顶层容器主要有三种:小应用程序(Applet和JApplet)、对话框(Dialog 和JDialog)和框架(Frame和JFrame)。
这三种容器在AWT图形用户界面中对应的类分别是java.applet.Applet、java.awt.Dialog和java.awt.Frame;在Swing图形用户界面中对应的类分别是javax.swing.JApplet、javax.swing.JDialog和javax.swing.JFrame,这些名称均以“J”开头。
小应用程序主要用来设计嵌入在网页中运行的程序;对话框通常用来设计具有依赖关系的窗口;框架主要用来设计应用程序的图形界面。
2:一般容器包括面板(Jpanel)、滚动窗格(JScrollPane)、分裂窗格(JSplitPane)、选项卡窗格(JTabbedPane)和工具条(JtoolBar)。
面板通常是只有背景色的普通容器;滚动窗格具有滚动条;分裂窗格是用来装两个组件的容器;选项卡窗格允许多个组件共享相同的界面空间;工具条通常将多个组件(通常是带图标的按钮组件)排成一列或一排。
3:专用容器包括内部框架(JInternalFrame)、分层窗格(JLayeredPane)和根窗格(JRootPane)。
内部框架可以在一个窗口内显示若干个类似于框架的窗口;分层窗格给窗格增加了深度的概念,当两个或多个窗格重叠在一起时,可以根据窗格的深度来决定显示哪一个窗格的内容,一般显示深度值较大的窗格。
根窗格一般是自动创建的容器,创建内部框架或者任意一种顶层容器都会自动创建根窗格。
根窗格由玻璃窗格、分层窗格、内容窗格和菜单窗格构成。
玻璃窗格是不可见的,只是用来解释各种输入事件;分层窗格为内容窗格和菜单窗格服务,主要用来管理各种相关深度值;内容窗格用来管理除菜单窗格之外的位于根窗格容器内的组件;菜单窗格不是必需的,主要用来管理菜单栏和菜单。
4:基本控件包括命令式按钮(JButton)、单选按钮(JRadioButton)、复选框(JCheckBox)、组合框(JComboBox)和列表框(JList)。
5:不可编辑信息组件包括标签(JLabel)和进度条等。
6:可编辑组件包括文本编辑框(JTextField)和文本区域(JTextArea)等。
8.1.2 JFrame和JLabel(一)框架(JFrame)是顶层的容器。
1框架的构造:可以通过类javax.swing.JFrame的构造方法(A-B)A: public JFrame ( ) throws HeadlessException创建一个不可见不含标题的的初始化框架。
B:public JFrame (String title ) throws HeadlessException创建一个不可见的初始化框架,其中title指定框架的标题内容。
新创建的框架需要进行属性设置才能正常工作。
2框架的属性设置:可以通过类javax.swing.JFrame的成员方法(A-C)A: public viod setDefaultCloseOperation (int operation)设置关闭框架的行为属性。
其中operation一般为常数JFrame.EXIT_ON_CLOSE,表示关闭框架时,则退出程序。
B: public viod setSize (int width,int height)设置框架的大小。
width和height分别对应框架的宽度和高度。
C: public viod setVisible (boolean b)设置框架是否可见。
当b为true时,框架变成可见,否则不可见。
一般需要调用该成员方法让初始不可见的框架变成可见的,而且应当在前面属性设置完毕以及添加完组件之后调用该成员方法,否则,框架的图形界面可能会出现不正常显示。
3给顶层容器添加组件的方法:一般是先获取顶层容器的内容窗格,再向内容窗格添加组件。
(1)可以通过类javax.swing.JFrame的成员方法public Container getContentPane ()返回当前框架的内容窗格。
(2)此时,还需要给内容窗格设置布局方式类java.awt.Container的成员方法public viod setLayout(LayoutManager mgr)将当前容器的布局方式设置为参数mgr指定的方式。
最常见的布局方式是FlowLayout。
通过类java.awt.FlowLayout的构造方法public FlowLayout (int align)可以创建FlowLayout的实例对象。
在FlowLayout 布局方式下,组件在容器中以行的形式从左到右依次排列,参数align指定行对齐方式(常见的取值有FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHT),分别对应左中右对齐。
(3)在设置布局方式之后可以给内容窗格容器添加组件类java.awt.Container的成员方法public Component add (Component comp)将组件添加到当前容器中。
(二)利用标签(JLabel)可以在图形用户界面上显示一个字符串或一幅图。
1标签的创建:可以通过类javax.swing.JLabel的构造方法(A-C)A: public JLabel (String text)B: public JLabel (Icon icon)C: public JLabel (String text, Icon icon, int horizontalAlignment)其中参数text指定标签的文字信息;参数icon指定标签的图标;参数horizontalAlignment指定文字和图标在水平方向上的对齐方式,常见的取值有常量JLabel.LEFT、JLabel.CENTER、JLabel.RIGHT,分别对应左中右对齐方式。
如果参数text为null,则该标签不含文字信息;如果参数icon为null,则该标签不含图标。
2设置标签的属性:可以通过类javax.swing.JLabel的成员方法(A-G)A: public void setText (String text)重新设置标签的文字信息,参数text指定标签的新的文字信息。
如果参数text为null,则该标签不含文字信息。
B: public void setIcon (Icon icon)重新设置标签的图标,参数icon指定标签的新图标。
如果参数icon为null,则该标签不含图标。
C: public void setHorizontalAlignment(int alignment)设置组成标签的文字与图标在水平方向上的对齐方式,参数alignment指定常见的取值有常量JLabel.LEFT、JLabel.CENTER、JLabel.RIGHT,分别对应左中右对齐方式。
D: public void setHorizontalTextPosition(int textPosition)设置组成标签的文字与图标在水平方向上的相对位置关系,参数textPosition 为常量JLabel.LEFT或JLabel.RIGHT时,文字分别位于图标的左侧或右侧;参数textPosition为常量JLabel.CENTER时,文字与图标在水平方向中对齐。
E: public void setVerticalAlignment(int alignment)设置组成标签的文字与图标在竖直方向上的对齐方式,参数alignment指定常见的取值有常量JLabel.TOP、JLabel.CENTER、JLabel.BOTTOM,分别对应左中右对齐方式。
F: public void setVerticalTextPosition(int textPosition)设置组成标签的文字与图标在水平方向上的相对位置关系,参数textPosition 为常量JLabel.TOP或JLabel.BOTTOM时,文字分别位于图标的上方或下方;参数textPosition为常量JLabel.CENTER时,文字与图标在竖直方向上中对齐。
G: public void setToolTipText(String text)设置当鼠标指针在标签上稍加停留时出现的提示信息,其内容为text指定的字符串。
8.1.3 JDialog和JOptionpane(一)对话框(JDialog)用来设计具有依赖关系的窗口,通常在已有的对话框上创建对话框,已有的对话框称为父窗口,新创建的称为子窗口。
1对话框的创建:可以通过类javax.swing.JDialog的构造方法(A-B)A: public JDialog (Dialog owner, String title, boolean modal)B: public JDialog (Frame owner, String title, boolean modal)参数owner指定对话框的父窗口,参数title指定当前对话框的标题,参数modal指定对话框的模式,其中A方法新创建对话框的父窗口也是对话框,B方法新创建对话框的父窗口是框架。
对话框的模式有两种:当modal为true时,新创建的对话框是有模式对话框(一般无法通过图形界面用户操作父窗口,而只能与作为子窗口的有模式对话框进行交互,在关闭有模式对话框后,其父窗口才回到激活的状态),否则是无模式对话框(无模式对话框与其父窗口都处于激活的状态,当关闭无模式对话框时,其父窗口仍然存在,但是当关闭其父窗口时,通常会自动关闭该无模式对话框)。
2设置对话框的大小和可见性属性:可以通过类javax.swing.JDialog的成员方法(A-B)A: public voidSetSize (intwidth,int height)设置对话框的大小,width和height分别对应框架的宽度和高度。