实验1容器、布局管理器和边框.
- 格式:doc
- 大小:199.50 KB
- 文档页数:16
实验11 图形用户界面(GUI)设计一、实验目的●掌握容器、组件的概念;●熟悉常用容器Frame、Panel等的使用;●熟悉常用组件Label、Button、TextField、TextArea、List、Choice、Checkbox等的使用。
●掌握常用布局管理器的使用;●掌握下拉式菜单(一级、二级)的设计——创建菜单条、菜单、菜单项对象,并进行正确的装配;●掌握Font类及Color类二、实验要求●熟练掌握Frame、Panel的用法●熟练掌握常用组件的使用●熟练掌握布局管理器的使用●掌握下拉式菜单的使用三、实验环境●Eclipse IDE或者MyEclipse IDE四、考查知识点1.AWT核心概念:组件、容器和布局管理器组件--Component组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。
组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来,是Java的图形用户界面的最基本组成部分。
容器—Container容器(Container)也是一个类,实际上是Component的子类,因此,容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。
布局管理器--LayoutManager布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
2.Swing概述Swing是第二代GUI开发工具Swing:又称为轻量级组件,它是Java的改进版本,是第二代GUI开发工具;AWT采用了与特定平台相关的实现,而绝大多数Swing组件却不是,Swing 组件显示不依赖于本地对等组件;Swing是构筑在AWT上层的一组GUI组件的集合,为保证可移植性,它完全用Java语言编写;与AWT相比,Swing提供了更完整的组件,引入了许多新的特性和能力。
一、实验目的通过本次实验,掌握Java Swing框架中常用的布局管理器,如FlowLayout、BorderLayout、GridLayout、GridBagLayout等,并学会如何使用这些布局管理器对窗口进行合理布局,提高GUI应用程序的界面设计能力。
二、实验环境1. 开发工具:Eclipse2. 开发语言:Java3. 环境配置:Java Development Kit(JDK)版本为1.8三、实验内容1. 流式布局(FlowLayout)2. 边界布局(BorderLayout)3. 网格布局(GridLayout)4. 网格袋布局(GridBagLayout)四、实验步骤1. 流式布局(FlowLayout)(1)创建一个窗口,并设置窗口标题为“FlowLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为FlowLayout。
(4)运行程序,观察窗口布局效果。
2. 边界布局(BorderLayout)(1)创建一个窗口,并设置窗口标题为“BorderLayout”。
(2)在窗口中添加四个标签,分别为“North”、“South”、“East”和“West”。
(3)设置窗口的布局管理器为BorderLayout。
(4)运行程序,观察窗口布局效果。
3. 网格布局(GridLayout)(1)创建一个窗口,并设置窗口标题为“GridLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为GridLayout,并设置每行和每列的组件数量为2。
(4)运行程序,观察窗口布局效果。
4. 网格袋布局(GridBagLayout)(1)创建一个窗口,并设置窗口标题为“GridBagLayout”。
QtCreator布局管理器的使用布局管理器是用于在应用程序用户界面中自动排列和定位窗口部件的工具。
Qt Creator提供了多种布局管理器,以满足不同的需求。
使用布局管理器可以使窗口部件自动适应不同的窗口大小和分辨率,并确保它们以一致的方式进行布局。
在设计器中,可以通过拖放的方式将窗口部件添加到窗口区域。
布局管理器可以使用以下几种方式进行设置:1. 垂直布局管理器(QVBoxLayout):它可以将窗口部件垂直排列。
在设计器中,拖放一个垂直布局管理器到窗口区域,并将要排列的窗口部件添加到该布局管理器中。
在布局管理器的属性窗口中,可以设置间距和对齐方式。
2. 水平布局管理器(QHBoxLayout):它可以将窗口部件水平排列。
操作方式类似于垂直布局管理器。
3. 网格布局管理器(QGridLayout):它将窗口部件以网格的形式排列。
在设计器中,拖放一个网格布局管理器到窗口区域,并使用布局管理器的属性窗口设置网格的行数和列数。
然后,将窗口部件添加到该布局管理器中的指定位置。
4. 堆叠布局管理器(QStackedLayout):它将窗口部件叠放在一起,只显示当前活动的窗口部件。
在设计器中,拖放一个堆叠布局管理器到窗口区域,并将要堆叠的窗口部件添加到该布局管理器中。
在布局管理器的属性窗口中,还可以设置部件的拉伸因子、大小约束和边距等属性。
布局管理器还提供了一些方法,可以通过编程方式修改布局以及窗口部件的属性。
例如,可以使用addLayout(方法将一个布局管理器添加到另一个布局管理器中,以创建更复杂的布局。
另外,布局管理器还支持对窗口部件进行扩展、收缩和隐藏等操作。
例如,可以使用addStretch(方法将一个弹簧部件添加到布局管理器中,使其占据剩余空间。
还可以使用addWidget(方法将一个窗口部件添加到布局管理器中。
总之,Qt Creator提供了丰富的布局管理器,并且使用它们非常方便。
通过使用布局管理器,可以轻松创建自适应和易于管理的用户界面。
实验报告单边框1. 引言单边框是一种常见的UI设计效果,在网页设计、移动应用开发等领域中广泛应用。
本实验旨在探索如何使用HTML和CSS实现一个简单的单边框效果,并对比不同的实现方法的优缺点。
2. 实验目标- 实现一个具有单边框效果的页面布局- 探索不同实现方法的优缺点3. 实验过程3.1 HTML 结构我们首先使用HTML创建一个基本的页面结构,其中包括一个容器元素和一些内容元素,代码如下:html<!DOCTYPE html><html><head><title>单边框实验</title><link rel="stylesheet" type="text/css" href="styles.css"></head><body><div class="container"><h1>单边框实验</h1><p>这是一个简单的单边框实验。
</p></div></body></html>3.2 CSS 样式接下来,我们使用CSS为容器元素添加样式,实现单边框效果。
在这里,我们将使用`border`属性来创建边框。
具体实现如下:css.container {width: 300px;padding: 20px;background-color: f2f2f2;border: 3px solid 000;}3.3 实验结果在浏览器中打开HTML文件,我们可以看到一个具有单边框效果的页面。
容器元素被一个3像素宽的黑色实线边框所包围。
4. 实验结果分析4.1 优点- 简单易懂:使用`border`属性实现单边框效果非常简单,并且代码易于理解和维护。
swing jframe的用法(一)Swing JFrame用法详解介绍Swing是Java的一个GUI工具包,提供了一系列的组件用于创建用户界面。
JFrame是Swing中用于创建顶层窗口的类,它提供了一些方法和属性来自定义和管理窗口的外观和行为。
基本用法以下是一些使用Swing JFrame的基本用法,可以作为快速入门的参考:•创建一个空的JFrame对象:JFrame frame = new JFrame();•设置JFrame的标题:("My JFrame");•设置JFrame的大小:(500, 300);•设置Jframe窗口在屏幕上的位置:(null);•设置JFrame的关闭操作:(_ON_CLOSE);•添加其他组件到JFrame中:(component);•显示JFrame:(true);设置布局管理器布局管理器用于控制组件在容器中的位置和大小。
Swing提供了几种常用的布局管理器可以选择,如FlowLayout、BorderLayout和GridLayout等。
以下是设置布局管理器的用法:•使用FlowLayout布局管理器:(new FlowLayout());•使用BorderLayout布局管理器:(new BorderLayout());•使用GridLayout布局管理器:(new GridLayout(rows, columns));添加事件监听器Swing提供了一系列的事件监听器接口,用于对用户操作做出响应。
可以通过添加事件监听器来实现对JFrame中组件的交互响应。
以下是添加事件监听器的用法:•添加ActionListener监听器:(new ActionListener() { ... });•添加MouseListener监听器:(new MouseListener() { ... });•添加KeyListener监听器:(new KeyListener() { ... });自定义JFrame外观可以通过一些方法和属性来自定义JFrame的外观,以下是一些常用的自定义方法和属性:•设置JFrame的背景颜色:().setBackground();•设置JFrame的字体:(new Font("Arial", , 12));•设置JFrame的边框:().setBorder(());总结本文介绍了一些Swing JFrame的常用用法,涵盖了基本使用、布局管理器、事件监听器和外观自定义等方面。
实验1 容器、布局管理器和边框一、实验名称和性质二、实验目的1.使用CardLayout、GridBagLayout、BoxLayout、LayeredLayout和SpringLayout等布局管理器进行布局;2.会使用JScrollPane创建滚动窗格、学会使用JTabbedPane创建选项卡、学会使用JSplitPane创建分隔窗格;3.使用Swing组件中的各种边框。
三、实验内容1.使用CardLayout布局管理器编写程序(验证性内容)。
2. 使用BoxLayout布局管理器编写程序(验证性内容)。
3. 使用CardLayout管理器(设计性内容)。
4. 使用选项卡(设计性内容)。
5. 使用分隔窗格JSplitPane(设计性内容)。
四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows 2000或Windows XP软件:JDK 7.0;Eclipse五、知识准备前期要求掌握的知识:掌握容器和三种基本的布局管理器。
实验相关理论或原理:CardLayout 布局管理器将组件像卡片一样放置在容器中,每次仅有一张卡片是可见的,容器的作用就像一叠卡片。
这些卡片的顺序是有容器中组件的内部顺序决定的。
可以指定一叠组件周围的水平空隙和垂直空隙的大小。
布局管理器GridBagLayout 是最灵活、最复杂的布局管理器。
以网格的形式组织组件,组件可以改变大小,还可以按任意的顺序添加组件。
不使用布局管理器:Container.setLayout(null);javax.swing.BoxLayout 在一行或一列中摆放组件,构造方法:public BoxlayLayout(Container target, int axis)。
OverlayLayout 将组件相互覆盖叠放到一起,构造方法:public OverlayLayout(Container target)。
JTabbedPane提供一组相互排斥的卡片来访问多个组件,通常在JTabbedPane中放置一些面板,每个面板对应一张卡片。
JSplitPane 包含用分隔栏分隔开的两个组件,可以用分隔栏水平或垂直地分隔容器,并且拖动分隔栏可以改变每个组件所占空间的大小。
六、验证性实验验证性实验11.实验要求使用CardLayout布局管理器编写程序,布局如下图10.1所示界面。
图10.1 CardLayout布局管理器2. 程序参考代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ShowCardLayout extends JAppletimplements ActionListener, ItemListener {(1) private CardLayout cardLayout = new CardLayout() ; //定义CardLayout 布局管理器private JPanel cardPanel = new JPanel(cardLayout);private JButton jbtFirst, jbtNext, jbtPrevious, jbtLast;private JComboBox jcboImage;private final int NUM_OF_FLAGS = 9;public ShowCardLayout() {cardPanel.setBorder(new javax.swing.border.LineBorder(Color.red));// Add 9 labels for displaying images into cardPanelfor (int i = 1; i <= NUM_OF_FLAGS; i++) {JLabel label =new JLabel(new ImageIcon("image/flag" + i + ".gif"));cardPanel.add(label, String.valueOf(i));}// Panel p to hold buttons and a combo boxJPanel p = new JPanel();p.add(jbtFirst = new JButton("首页"));p.add(jbtNext = new JButton("下一页"));p.add(jbtPrevious= new JButton("上一页"));p.add(jbtLast = new JButton("尾页"));p.add(new JLabel("图片"));p.add(jcboImage = new JComboBox());// Initialize combo box itemsfor (int i = 1; i <= NUM_OF_FLAGS; i++)jcboImage.addItem(String.valueOf(i));// Place panels in the framegetContentPane().add(cardPanel, BorderLayout.CENTER); getContentPane().add(p, BorderLayout.SOUTH);// Register listeners with the source objectsjbtFirst.addActionListener(this);jbtNext.addActionListener(this);jbtPrevious.addActionListener(this);jbtLast.addActionListener(this);jcboImage.addItemListener(this);}/** Handle button actions */public void actionPerformed(ActionEvent e) {String actionCommand = e.getActionCommand();if (e.getSource() instanceof JButton)if ("首页".equals(actionCommand))// Show the first component in cardPanel(2) cardLayout.first(cardPanel) ;else if ("尾页".equals(actionCommand))// Show the last component in cardPanel(3)st(cardPanel) ;else if ("上一页".equals(actionCommand))// Show the previous component in cardPanel(4)cardLayout.previous(cardPanel) ;else if ("下一页".equals(actionCommand))// Show the next component in cardPanel(5) cardLayout.next(cardPanel) ;}/** Handle selection of combo box item */public void itemStateChanged(ItemEvent e) {if (e.getSource() == jcboImage)// Show the component at specified index(6) cardLayout.show(cardPanel, (String)e.getItem()) ;}//Main methodpublic static void main(String[] args) {ShowCardLayout applet = new ShowCardLayout();JFrame frame = new JFrame();//EXIT_ON_CLOSE == 3frame.setDefaultCloseOperation(3);frame.setTitle("ShowCardLayout");frame.getContentPane().add(applet, BorderLayout.CENTER);applet.init();applet.start();frame.setSize(400,320);Dimension d = Toolkit.getDefaultToolkit().getScreenSize();frame.setLocation((d.width - frame.getSize().width) / 2,(d.height - frame.getSize().height) / 2);frame.setVisible(true);}}验证性实验21.实验要求使用BoxLayout布局管理器编写程序。
2. 程序参考代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ShowBoxLayout extends JAppletimplements ActionListener {// Create two box containersprivate Box box1 = (1) Box.createHorizontalBox() ; //创建水平Boxprivate Box box2 = (2) Box.createVerticalBox() ; //创建垂直Box// Create a label to display flagsprivate JLabel jlblFlag = new JLabel();// Create image icons for flagsprivate ImageIcon imageIconUS =new ImageIcon(getClass().getResource("/image/us.gif"));private ImageIcon imageIconCanada =new ImageIcon(getClass().getResource("/image/ca.gif"));private ImageIcon imageIconNorway =new ImageIcon(getClass().getResource("/image/norway.gif"));private ImageIcon imageIconGermany =new ImageIcon(getClass().getResource("/image/germany.gif"));private ImageIcon imageIconPrint =new ImageIcon(getClass().getResource("/image/print.gif"));private ImageIcon imageIconSave =new ImageIcon(getClass().getResource("/image/save.gif"));// Create buttons to select imagesprivate JButton jbtUS = new JButton("US");private JButton jbtCanada = new JButton("Canada");private JButton jbtNorway = new JButton("Norway");private JButton jbtGermany = new JButton("Germany");public ShowBoxLayout() {box1.add(new JButton(imageIconPrint));box1.add(Box.createHorizontalStrut(20));box1.add(new JButton(imageIconSave));box2.add(jbtUS);box2.add( (3)Box.createVerticalStrut(8) ); //添加支柱box2.add(jbtCanada);box2.add( (4)Box.createGlue() ); //添加胶条box2.add(jbtNorway);box2.add(Box.createRigidArea((5)new Dimension(10,8))); //添加刚性块box2.add(jbtGermany);box1.setBorder(new javax.swing.border.LineBorder(Color.red));box2.setBorder(new javax.swing.border.LineBorder(Color.black));getContentPane().add(box1, BorderLayout.NORTH);getContentPane().add(box2, BorderLayout.EAST);getContentPane().add(jlblFlag, BorderLayout.CENTER);// Register listenersjbtUS.addActionListener(this);jbtCanada.addActionListener(this);jbtNorway.addActionListener(this);jbtGermany.addActionListener(this);}public void actionPerformed(ActionEvent e) {if (e.getSource() == jbtUS)jlblFlag.setIcon(imageIconUS);else if (e.getSource() == jbtCanada)jlblFlag.setIcon(imageIconCanada);if (e.getSource() == jbtNorway)jlblFlag.setIcon(imageIconNorway);if (e.getSource() == jbtGermany)jlblFlag.setIcon(imageIconGermany);}public static void main(String[] args) {ShowBoxLayout applet = new ShowBoxLayout();JFrame frame = new JFrame();//EXIT_ON_CLOSE == 3frame.setDefaultCloseOperation(3);frame.setTitle("ShowBoxLayout");frame.getContentPane().add(applet, BorderLayout.CENTER);applet.init();applet.start();frame.setSize(400,320);Dimension d = Toolkit.getDefaultToolkit().getScreenSize();frame.setLocation((d.width - frame.getSize().width) / 2,(d.height - frame.getSize().height) / 2);frame.setVisible(true);}}七、设计性实验1.实验要求(1)(使用CardLayout管理器)编写一个applet,进行整数和有理数的算术运算。