Java桌面程序开发第4章 容器与布局
Java桌面应用开发
优化SQL语句:避免使用复杂的SQL语句, 使用索引和查询优化器
异步处理:将耗时操作异步执行,避免阻 塞主线程
合理使用多线程:根据任务性质合理分配 线程,提高并发处理能力
监控系统资源:CPU、内存、磁盘、网络等 性能优化方法:减少内存占用、优化算法、使用多线程等 工具:JProfiler、VisualVM等 优化效果评估:性能测试、用户反馈等
需求分析:明确应用需求,确定功能模块 设计阶段:设计应用界面和功能模块,制定开 发计划 开发阶段:编写代码,实现功能模块,进行单 元测试
测试阶段:进行集成测试、系统测试和用户验 收测试 部署阶段:将应用部署到目标平台上,进行性 能优化和调试 维护阶段:对应用进行维护和升级,解决用户 反馈的问题
Java桌面应用界面 设计
Java桌面应用开发
作者:
目录
添加章节标题
Java桌面应用开发 基础
Java桌面应用开发简介 Java桌面应用的特点 Java桌面应用开发环境搭建
Java桌面应用开发流程 Java桌面应用开发工具介绍 Java桌面应用开发案例分析
JDK安装:下载并安装JDK,设置JAVA_HOME 环境变量
用户身份验证:确保 用户身份的真实性和 唯一性
安全协议:使用 SSL/TLS等安全协议进 行数据传输和存储
密码管理:要求用户 设置强密码,并定期 更换
异常处理:对用户异 常行为进行监控和报 警
恶意软件类型:病毒、木马、间谍软件等 攻击方式:通过网络、电子邮件、USB设备等传播 防范措施:安装防病毒软件、定期更新系统补丁、提高安全意识等 安全编程:使用安全的编程实践,如输入验证、数据加密等
Java桌面应用功能 实现
文件读取:使 用 FileInputStream 类读取文件内 容
java图形用户界面设计教程
第4章图形用户界面设计本章要点● Java图形用户界面设计的基本知识●布局管理器的应用● Java常用图形用界面设计组件的应用● Java常用组件事件处理的应用4.1 认识AWT包和Swing包用户界面是计算机用户与软件之间的交互接口。
一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。
因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。
Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。
这两部分功能由Java的两个包来完成-awt和swing。
虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。
awt包是最早被开发出来的。
但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。
比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。
这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。
这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。
由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。
但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。
awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。
Java有两个主要类库分别是Java包和Javax包。
在Java包中存放的是Java语言的核心包。
Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。
swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。
java布局中的BoxLayout布局,使用BoxLayout进行Swing布局
java布局中的BoxLayout布局,使⽤BoxLayout进⾏Swing布局在⽤户使⽤ Java Swing 进⾏⽤户界⾯开发过程中,会碰到如何对 Java Swing 的控件进⾏布局的问题。
Swing 的控件放置在容器(Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例⼦有 Frame、Panel 等等。
容器需要定义⼀个布局管理器来对控件进⾏布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、BoxLayout、GridLayout 和 GridBaglayout, 它们的主要特点如表 1 所⽰:表 1. Swing 中的⼀些主要布局管理器的⽐较布局管理器特点FlowLayout把控件按照顺序⼀个接⼀个由左向右的⽔平放置在容器中,⼀⾏放不下,就放到下⼀⾏BorderLayout将整个容器划分成东南西北中五个⽅位来放置控件,放置控件时需要指定控件放置的⽅位BoxLayout可以指定在容器中是否对控件进⾏⽔平或者垂直放置,⽐ FlowLayout 要更为灵活GridLayout将整个容器划分成⼀定的⾏和⼀定的列,可以指定控件放在某⾏某列上GridBagLayout是 Swing 当中最灵活也是最复杂的布局管理器,可对控件在容器中的位置进⾏⽐较灵活的调整本⽂主要关注在 BoxLayout 布局管理器的使⽤上。
我们⾸先对 BoxLayout 作⼀下介绍。
BoxLayout 介绍如前所述,BoxLayout 可以把控件依次进⾏⽔平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。
X_AXIS 表⽰⽔平排列,⽽ Y_AXIS 表⽰垂直排列。
BoxLayout 的构造函数有两个参数,⼀个参数定义使⽤该 BoxLayout 的容器,另⼀个参数是指定 BoxLayout 是采⽤⽔平还是垂直排列。
下⾯是⼀个创建 BoxLayout 实例的例⼦:JPanel panel=new JPanel();BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);panel.setLayout(layoout);在这个例⼦中,⼀个 BoxLayout 布局管理器的实例 layout 被创建,这个实例被设置为 panel 的布局管理器,该布局管理器采⽤了⽔平排列来排列控件。
15 java GUI1(组件、容器、布局管理器)
… ImageIcon icon = new ImageIcon("Calv.gif"); JLabel calv_label = new JLabel(" 这 是 Calvin", icon, SwingConstants.LEFT); …
JtextComponent 为所有 Swing 文本组件的根类
图形编程是用图形的方式,借助菜单,按钮等 标准界面元素和鼠标操作,帮助用户方便地向 计算机系统发出指令,启动操作,并将系统运 行的结果同样以图形方式显示给用户的技术。 Java提供了AWT和Swing开发包进行GUI编程
◦ AWT包 (以 java.awt 开头的) ◦ Swing包 (以 javax.swing 开头的)
con.add(ta); …
为了简化表单填写过程,通常为用户提供多种可供 选择的选项,而无需用户写出他们的响应。常用于 选择性输入的组件有:
◦ ◦ ◦ ◦ 复选框 单选按钮 列表框 组合框
复选框用于为用户提供一组选项 JCheckBox 类具有下列构造函数:
◦ ◦ ◦ ◦ ◦ ◦ ◦ JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon, boolean selected) JCheckBox(String text) JCheckBox(String text, boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected)
• 组件必须添加至内容窗格,而不是直接添 加至 JFrame 对象,示例:
JAVA SWING 4中布局方式
创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水 平和垂直间隙。
方法摘要
void
addLayoutComponent(String name, Component comp) addLayoutComponent 将指定的组件添加到布局中。 getAlignment() getAlignment 获取此布局的对齐方式。 getAlignOnBaseline() getAlignOnBaseline 如果组件将沿其基线垂直对齐,则返回 true。 getHgap() getHgap 获取组件之间以及组件与 Container 的边之间的水平间 隙。
构造方法摘要
BorderLayout() BorderLayout 构造一个组件之间没有间距的新边框布局。 BorderLayout(int hgap, int vgap) BorderLayout 构造一个具有指定组件间距的边框布局。
方法摘要
void
addLayoutComponent(Component comp, Object constraints) addLayoutComponent 使用指定的约束对象将指定组件添加到布局中。 addLayoutComponent(String name, Component comp) addLayoutComponent 已过时。 已过时。 由 addLayoutComponent(Component, Object)
float
float
Component getLayoutComponent getLayoutComponent(Container target, Object constraints)
Component getLayoutComponent getLayoutComponent(Object constraints)
Java开发桌面程序学习(二)————fxml布局与控件学习
Java开发桌⾯程序学习(⼆)————fxml布局与控件学习JavaFx项⽬新建完项⽬,我们的项⽬有三个⽂件Main.java 程序⼊⼝类,载⼊界⾯并显⽰Controller.java 事件处理,与fxml绑定Sample.fxml 界⾯sample.fxml需要通过标签fx:controller定义对应的controller<!-- 最外层的那个布局使⽤fx:controller属性即可 --><FlowPane fx:controller="sample.Controller" ..></FlowPane>专业术语舞台(Stage),场景(Scene),容器(Container),布局(Layout )和控件(Controls)之间的关系常⽤容器(布局)Container可以把容器和布局统⼀成⼀个概念Vbox相当于垂直⽅向LinearLayoutHbox相当于垂直⽅向的LinearLayoutFlowPanel相当于LinearLayout,⽅向可以定义⽔平或者垂直,设置⽔平⽅向,第⼀⾏排满之后,会⾃动换⾏排列,设置垂直⽅向,第⼀列排满之后,会⾃动换下⼀列BorderPane上中下左右五个部分AnchorPane相当于Android⾥⾯的约束布局,⽐如让某个控件离右边100px,离下边100pxScrollPane 滑动的布局GridPane 通常⽤于这样的布局:第⼀列上的只读标签的输⼊表单和第⼆列上的输⼊字段,也就是常⽤的⽤户名后⾯加⼀个输⼊框常⽤控件(Control)默认的为原⽣的,JFX前缀则是Jfoenix⾥⾯的⽂本labelJFXPasswordField 密码框JFXTextField 单⾏输⼊框JFXTextArea 多⾏输⼊框按钮JFXButton选择框JFXCheckboxJFXRadioButtonMenuButton 下拉选择图⽚ImageView进度条JFXProcessbarJFXSlider ⽔平调节,类似按下⾳量键出现横线JFXSpinner 圆圈进度条开关JFXToggleButton列表JFXListView菜单MenuBar ⾃带有⿏标滑过变⾊,就像SceneBuilder的菜单栏MenuMenuItemRadioMenuItem 点击之后前⾯会有√,⼀列菜单可以有多个,但是只能选择⼀个RadioMenuItem,RadioMenuItem之间是互斥的,需要使⽤toggleGroup分为同⼀组CheckMenuItem 多选,⼀列菜单有多个,也可以选多个ToggleGroup toggleGroup = new ToggleGroup();RadioMenuItem radioItem1 = new RadioMenuItem("Option 1");radioItem.setOnAction(new EventHandler<ActionEvent>() {@Override public void handle(ActionEvent e) {System.out.println("radio toggled");}});radioItem1.setToggleGroup(toggleGroup);RadioMenuItem radioItem2 = new RadioMenuItem("Option 2");radioItem.setOnAction(new EventHandler<ActionEvent>() {@Override public void handle(ActionEvent e) {System.out.println("radio toggled");}});radioItem2.setToggleGroup(toggleGroup);SeparatorMenuItem 分割线**前⾯需要在添加到MenuBar⾥⾯才能使⽤ **SpiltMenuButton 左边是某个按钮,右边是⼀个下拉箭头,点击左边,就会实现按钮操作,点击右边,在出现的列表中选择某⼀项,就可以改变左边按钮使⽤SceneBuilder⽣成fxml布局由于现有的⼯具不多,只有个界⾯化的⼯具,所以就不过多去研究fxml代码部分了。
java布局设计
本章介绍java.awt包中的5种布局类和java.swing.border包中的BoxLayout类。
BoxLayout类的方法如表9-7所示。 例9-6采用BoxLayout布局策略在窗口中按水平和垂直排列方式添加按钮数组。
2021/12/17
高级GUI设计与多媒体技术
5
1.8 布局管理器组合使用
1.8 布局管理器组合使用
布局管理器的 组合使用。在此仅枚举一例以资理解。 【例9-7】创建一个盒型_流型布局组合应用程序。
boxB.add(new JTextField(20)); boxB.add(Box.createVerticalStrut(10));
boxB.add(new JTextField(20)); boxB.add(Box.createVerticalStrut(10));
boxB.add(new JTextField(20)); boxB.add(Box.createVerticalStrut(10));
boxB.add(new JTextField(20)); boxS=Box.createHorizontalBox(); //构建行型盒型布局Box组件
2021/12/17
高级GUI设计与多媒体技术
6
【例9-7】
boxS.add(boxA);boxS.add(Box.createHorizontalStrut(8));//构建垂直Struct类型间距 boxS.add(boxB); Container con=getContentPane(); con.setLayout(new FlowLayout()); //构建流型布局Box组件 con.add(boxS); con.validate(); con.setBackground(Color.pink); //设置背景颜色 setBounds(100,100,350,170); //设置框袈大小与位置 setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
Java布局管理器
Java图形用户界面2—布局管理器在Java中组件的摆放位置和大小是由布局管理器来决定的,容器对布局管理器的特定实例保持着一个引用,当容器要定位一个组件的时候,它将调用布局管理器来决定。
我们在设置组件的大小的时候,也是通过这个完成的。
在Java中给我提供了五种布局管理器。
BoraderLayout边界布局管理器,FlowLayout浮动布局管理器,GridLayout网格布局管理器,CardLayout卡片布局管理器,GridBagLayout布局管理器。
在Java中FlowLayout是Panel容器的默认管理器,其组件的放置规律是从上到下,从左到又。
BoarderLayout是Window、Frame和Dialog的默认布局管理器。
下面我们先说一下BoarderLayout布局管理器。
下面有张图片:通过上面的图片我们可以看出来,BoarderLayout将容器分成了五个区域:North、South、East、West和Center。
每一个区域可以用来放置一个组件。
如果只有一个组件,默认的是放置在Center中。
下面我们看一个例子程序:在上面的程序中,我们可以看到在我们创建Frame后必须设置一些参数,这些参数在程序中注释已经显示其作用了,但是Frame的设置并不只有这些,读者可以自己根据Java帮助文档详细的学习。
在上面程序执行完成之后就是按照第一张图片给的位置摆放这些按钮的,但是这些按钮之间没有空隙,有时候我们想让按钮之间有空隙,我们可以将14行的代码注释取消,表示的产生2个像素的空隙。
FlowLayot布局管理器,是所有的组件浮动的填充在容器中,我们看一个例子:上面程序的运行结果如下图:如果我们改变窗口的大小,相应的组件的位置也会发生改变,读者可以自己试一下。
对于FlowLayout还提供了按钮的对齐方式,例如我们程序中的第15行代码,就是设置了左对齐的方式,如果我们取消注释,这些按钮将会从左边依次摆放。
JAVA图形界面各种布局及使用方法
1.布局对于JFrame窗口,默认布局是BorderLayout布局。
对于JPanel,默认布局是FlowLayout布局。
容器可以使用方法:setLayout(布局对象);来设置自己的布局。
(1)FlowLayout布局FlowLayout类创建的对象称做FlowLayout型布局。
FlowLayout类的一个常用构造方法如下:FlowLayout()该构造方法可以创建一个居中对齐的布局对象。
例如:FlowLayout flow=new FlowLayout();如果一个容器con使用这个布局对象:con.setLayout(flow);那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列。
FlowLayout布局对象调用flow.setAlignment(FlowLayout.LEFT);来设置组件靠左对齐FlowLayout布局对象调用setHgap(int hgap) 方法和setVgap(int vgap)可以重新设置布局的水平间隙和垂直间隙。
(2)BorderLayout布局BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的间接子类,它们的默认布局都是BorderLayout 布局。
容器使用BorderLayout 布局,那么容器空间简单地划分为东、西、南、北、中五个区域。
每加入一个组件都应该指明把这个组件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示.添加到某个区域的组件将占据整个这个区域。
每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后者替换掉。
(3)CardLayout 布局使用CardLayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。
java Swing(容器,简单控件,布局管理器)
JTextArea 组件用来接受用户输入的多行文本信息 可用来实现滚动条效果 构造函数如下:
JTextArea() JTextArea(int rows, int cols):rows表示行数,cols表示列数 JTextArea(String text):text表示默认文字 JTextArea(String text, int rows, int cols)
布局管理器
用户界面上的屏幕组件可以按照一定的格式布局
例如水平排列,或按网格方式排列
布局管理器类是一组类
实现youtManager接口 帮助在容器中放置组件
常用布局如下
BorderLayout FlowLayout GridLayout
FlowLayout
左上角 流布局是面板的默认布局管理器
Swing(一)
课程目标
理解Java的图形化编程方式 掌握Swing的各种编程方法 掌握Swing的常用组件 掌握事件处理及监听者模式 使用Swing设计工程界面
本课目标
了解Java的GUI技术:AWT,SWING 理解Swing与AWT的区别 了解swing结构 容器(JFrame,JPanel) 控件(JButton,JTextFild) 布局管理器(FlowLayout,BorderLayout,GridLayout)
swing相对awt来说swing功能更强大使用更方便swing并没有代替awtswing只是awt的子类它的使用依赖于awtawt创建gui创建gui通过javaawt容器组件布局管理器字体事件图形和绘制方法包含awt容器组件以图形表示的对象允许用户交互创建并构造用于选择新字体的对象用于用户和系统交互使用awt图形方法相对于窗口绘制图形定义gui组件的位置awt重量级组件awt重量级组件swing创建gui创建gui通过javaxswing容器组件可改变的外观java2d图形绘制包含swing组件以图形表示的对象允许用户交互使用java2d绘制图形可更换图形界面的风格swing轻量级组件纯更稳定swing结构objectcomponentjframecontainerwindowframedialogjdialogjtextjcomboboxjlabeljlistjmenubarjoptionpanejpaneljscrollbarabstractbuttonjtogglebuttonjmenuitemjbuttonjcheckboxjradiobuttonjcomponentjmenujavaxswing常见容器jframejframejscrollpanejscrollpanejpaneljpanelswing容器组件容器组件的理解jframejdialogjwindowjapplet都是底层容器同时为重量级容器用来显示其他容器或组件jpanel为上层容器轻量级容器一般用来放置其他功能组件在使用的时候我们一般得到底层容器的contentpane然后将上层容器加入其中常见功能组件标签文本域复选框单选按钮文本区按钮用于在swing程序中创建窗口包含边框标题和用于关闭和图标化窗口的按jframejframe的常用方法jframejframestringtitlevoidaddcomponentcompvoidsetvisiblevoidsetsizeintwidthintheightdimensiongetsizevoidsettitlestringnamejframe用于将较小的轻量级组件组合在一起与内容窗格相似面板在默认情况下不透明不包含边框标题和用于关闭和图标化窗口的按钮jpaneljpanel的常用方法jpaneljpanellayoutm
java布局管理
19
3.fill和anchor参数。fill参数用于指定组件在单元 格内进行伸缩时的填充方式,该参数可以有四种 有效值:GridBagConstraints.NONE(不伸缩)、 GridBagConstraints.HORIZONTAL(水平伸缩)、 GridBagConstraints.VERTICAL(垂直伸缩)和 GridBagConstraints.BOTH 如果组件没有填充整个区域,可以通过设置 anchor域指定其位置。有效值为 GridBagConstraints.CENTER, GridBagConstraints.NORTH, GridBagConstraints.NORTHEAST, GridBagConstraints.EAST等
6
三、BorderLayout (边框布局管理器)
313页
边框布局管理器是每个JFrame的内容窗格的默认布局管理器 流布局管理器完全控制每个组件的放置位置,边框布局管理器则不然 组件可被置于内容窗格的中部,北部、南部、东部或西部位置。 如果扩大窗口,用户将会看到中心区域会尽可能的扩大,而其他区域只 扩大到容纳组件所需空间的大小。
27
作业:
1 使用GridLayout 将两个单选按钮排在一列。 2 设计一个密码登录界面,输入的密码 要用星号“*” 表示。如下图:
18
2 . 增 量 域 ( weightx 和 weighty ) 。 GridBagLayout内的每个区域都必须设置它的 增量 域 ,即 weightx 和 weighty 。如果将权值设置为 0 , 那么这个区域就不会在那个方向上扩张或收缩,超 出它的初始大小。 从概念上讲,增量参数属于行和列的属性,而不 属于摸个单独的单元格。但却需要在单元格上指定 它们,这是因为网格组布局并不暴露行和列。 注意,增量并不实际给出列的相对大小
JAVA布局管理器
布局管理器
构造复杂的布局效果
无布局管理 容器的嵌套 复杂的布局管理器
Part Four
第四讲 布局管理器
布局管理器
组件在容器中的布局
Java程序布局的特点
窗口大小的不确定性(显示无关) 控件的大Hale Waihona Puke 和位置可以随窗体大小的 调整而调整
布局管理器
布局管理器
布局管理器
Java为了实现跨平台的特性并获得动态的布局 效果,将容器内的所有组件安排给一个“布局管理 器”的对象负责管理。
布局管理器
无布局管理
在程序中还可以使用setLayout(null)方法设置 某个容器的布局管理器为空,也就是无布局管理器。
用户必须使用Java语言提供的setLocation() , setSize(),setBounds()等方法,为容器中的每个组件 设置大小和显示位置,否则将无法看到这些组件。
当窗口移动或调整大小后组件如何变化等功能, 授权给对应的容器布局管理器来管理。
不同的布局管理器使用不同算法和策略,容器 可以通过选择不同的布局管理器来决定布局。
布局管理器
简单的布局管理器 FlowLayout BorderLayout GridLayout CardLayout
布局管理器
FlowLayout FlowLayout布局管理器是Panel和Applet的缺 省布局管理器。 这种布局方式是将组件一排一排地依次放置。 当容器被重新设置大小后,则布局也将随之发 生改变。各个组件大小不变,而其相对位置会发生 变化。
布局管理器
GridLayout GridLayout 布局管理器可以使容器中的各个 组件呈网格状布局。当改变容器大小后,其中的组 件相对位置不变,但大小改变。 容器中各个组件同高度、同宽度。各个组件按 照从左到右、从上到下的顺序依次排列。
JAVA 图形用户界面的编程-控件与布局
附:实验源程序代码import java.awt.BorderLayout;import java.awt.Font;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;class Frame1 extends JFrame //设计一个窗体类{JButton jb1, jb2, jb3; //按钮JLabel jl; //标签Frame1() //构造方法{jb1 =new JButton("红色"); //创建按钮对象jb2 = new JButton("绿色") ;jb3 = new JButton("蓝色") ;jl = new JLabel("设定标签颜色") ; //创建标签对象jl.setFont(new Font("隶书", Font.PLAIN, 32)); //标签字体JPanel jp1 = new JPanel(); //面板1JPanel jp2 = new JPanel(); //面板2jp1 .add(jl); //标签放入面板1jp2 .add(jb1); //三个按键放入面板2jp2 .add(jb2);jp2 .add(jb3);setLayout( new BorderLayout() ); //窗体设定为边界布局add(jp1, BorderLayout.NORTH ) ; //标签面板放在窗体上端add(jp2, BorderLayout.CENTER ); //按钮面板放在窗体中间setSize(250,150) ; //设定窗体大小和位置setTitle("实验6-1") ; //设定窗体标题setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true) ; //设定窗体可见}}class Experiment9_1{public static void main(String[] args){new Frame1();}}import javax.swing.*;import java.awt.*;class Framel extends JFrame{JButton submit;JLabel lb_id,lb_name,lb_sex,lb_ty,lb_bj,lb_desc;JTextField jtf_id,jtf_name;JRadioButton male,female;JCheckBox ck_ty;JComboBox cb_bj;JTextArea txta_desc;Framel(){lb_id = new JLabel("学号:",JLabel.RIGHT);lb_name = new JLabel("姓名:",JLabel.RIGHT);lb_sex = new JLabel("性别:",JLabel.RIGHT);lb_ty = new JLabel("团员",JLabel.RIGHT);lb_bj = new JLabel("班级",JLabel.RIGHT);lb_desc = new JLabel("简介",JLabel.RIGHT);jtf_id = new JTextField(12);jtf_name = new JTextField(12);male = new JRadioButton("男");female = new JRadioButton("女");ck_ty = new JCheckBox();txta_desc = new JTextArea(5,11);male.setSelected(true);ButtonGroup bg_sex = new ButtonGroup();bg_sex.add(male);bg_sex.add(female);String items[] = {"网络信息1011","软件1011","系统维护1011"};cb_bj = new JComboBox(items);JPanel jtf = new JPanel();JPanel jtf2 = new JPanel();JPanel jtf3 = new JPanel();JPanel jtf4 = new JPanel();JPanel jtf5 = new JPanel();jtf.add(lb_id);jtf.add(jtf_id);jtf2.add(lb_name);jtf2.add(jtf_name);jtf3.add(lb_sex);jtf3.add(male);jtf3.add(female);jtf3.add(lb_ty);jtf3.add(ck_ty);jtf4.add(lb_bj);jtf4.add(cb_bj);jtf5.add(lb_desc);jtf5.add(txta_desc);setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));add(jtf);add(jtf2);add(jtf3);add(jtf4);add(jtf5);JPanel jp_submit = new JPanel();submit = new JButton("确定");jp_submit.add(submit);add(jp_submit);}}public class Experiment9_2{public static void main(String[] args){Framel f = new Framel();f.setLocation(200,100);f.setVisible(true);f.setTitle("实验6_2");f.setSize(250,300);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}实验三:import java.awt.GridLayout;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;class Frame3 extends JFrame{Frame3(){setLayout(new BoxLayout(this.getContentPane(),BoxLayout.Y_AXIS));JPanel jp1=new JPanel();JPanel jp2=new JPanel();JButton jb[]=new JButton[16];jp1.add(new JTextField(20));add(jp1);jp2.setLayout(new GridLayout(4,4,5,5));for(int i=0;i<10;i++)jb[i]=new JButton(""+i);jb[10] = new JButton(".");jb[11] = new JButton("1/x");jb[12] = new JButton("C");jb[13] = new JButton("√");jb[14] = new JButton("㎡");jb[15] = new JButton("㏒");for(int i=1;i<4;i++)jp2.add(jb[i]);jp2.add(jb[12]);for(int i=4;i<7;i++)jp2.add(jb[i]);jp2.add(jb[13]);for(int i=7;i<10;i++)jp2.add(jb[i]);jp2.add(jb[14]);jp2.add(jb[0]);jp2.add(jb[10]);jp2.add(jb[11]);jp2.add(jb[15]);add(jp2);setVisible(true);pack();setTitle("实验6-3");setLocation(300,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args){new Frame3();}}。
GUI编程(容器组件与布局).ppt
frame.pack();
// 设置框架窗口初始大小为刚好只显示出所有的组件。
frame.setVisible(true);
//显示框架对象代表的框架窗口
Java程序设计
6
JPanel面板
• 面板是一个不含标题栏,菜单栏以及边框的窗口 • JPanel是一种添加到其他容器使用的容器组件,
public JPanel(LayoutManager layout) 创建具 有指定布局管理器的JPanel对象。
Java程序设计
8
JPanel的常用方法
• add( 组件): 添加组件 • setSize(300,200):设置大小 • setBounds(0,0,800,800);设置坐标,大小
import java.awt.*; import javax.swing.*; class JPanelDemo extends JPanel {
JButton b1 = new JButton("JPanel"); JButton b2 = new JButton("Demo"); publiTabbedPane类的构造方法有:
JTabbedPane()创建空对象,该对象具有缺省的标签位置 JTabbedPane.TOP和缺省的布局策略 JTabbedPane.WRAP_TAB_LAYOUT。
JTabbedPane(int tabPlacement)创建空对象,该对象具 有指定的标签位置:1—JTabbedPane.TOP、2— JTabbedPane.BOTTOM、3—JTabbedPane.LEFT、4— —JTabbedPane.RIGHT以及缺省的布局策略 JTabbedPane.WRAP_TAB_LAYOUT
java的容器
Frame F =new Frame("TEST"); F.setSize(400,400); F.setVisible(true);
✓ 创建一个属于特定Frame的对话框:
Dialog d=new Dialog(F,"TEst",true); d.setSize(200,200); d.setVisible(true); d.setLocation(200,300);
框架是容器,就像面板一样,用户可以用add()方法将其他 组件加到该框架容器中。该容器的缺省布局是
8
BorderLayout.
三、对话框(Dialog )
对话框用于短暂的窗口。如:提示警告或向用户询问特定 信息的窗口等。
对话框没有标题条和菜单。用户可以决定对话框的尺寸是 否能被改变。
对话框分为有模式和无模式两种:有模式对话框在弹出后 其它所有的窗口都被它屏蔽掉,用户只有对它响应之后才 能进行其它的操作。无模式对话框在弹出后,用户可以不 理会它而转到别的界面去操作。
3
所 有 容 器 组 件 都 是 Container 类 的 子 类 。 在 Container类中定义了容器所需要用到的属性及方 法。 常用的方法有:
add (Component omp), setLayout(LayoutManager mgr)等。
4
JAVA中的常用容器组件:
1 面板(JPanel) 2 框架(JFrame) 3 对话框(JDialog ) 4 窗口(JWindow) 5 滚动窗格(JScrollpane)
11
2、FileDialog类
(1)FileDialog(Frame, String):创建一个打开文件的对话框, 此文件对话框附属于给定的框架,具有给定的标题。
《JAVA》14容器与界面布局
14.1 图形用户界面概述
Java专门设计了类库来满足各种图形用户
界面元素和用户交互事件。Java的GUI类 库由java.awt和javax.swing两个包组成,
分别称为AWT组件库和Swing组件库。
14.1 图形用户界面概述
java.awt包, AWT, 抽象窗口工具集 依赖本地GUI, “重型组件”(heavyweight component)
flowlayout.setVGap(20);
例:
演示三种基本布局管理器的使用和效果。观察三种 布局管理器的外观效果。
LayoutDemo.java 演示
谢谢!
javax.swing.JFrame:用于构造GUI窗口的顶 层容器类,是组织管理其它Swing组件形成复杂界 面的基础。 javax.swing.JDialog:用于构造GUI对话框
窗口的顶层容器类,一般用于接收来自用户的指令
或通知事件发生的容器。
框架JFrame
1. 创建框架
import javax.swing.JFrame; public class MyFrame {
BorderLayout: hGap, vGap
例如:
//创建流式布局管理器 FlowLayout flowLayout = new FlowLayout() //修改布局管理器属性
flowlayout.setAlignment(FlowLayout.RIGHT);
flowlayout.setHGap(10);
javax.swing包, Swing组件库
不依赖本地GUI, “轻型组件”(lightweight
compont)
14.1 图形用户界面概述
GUI类的分类:
JAVA-SWING-4中布局方式
从此边框布局中移除指定组件。
void
setHgap(int hgap)
设置组件之间的水平间距。
void
setVgap(int vgap)
设置组件之间的垂直间距。
String
toString()
返回此边框布局的状态的字符串表示形式。
Dimension
preferredLayoutSize(Containertarget)
给出指定目标容器中的visible组件,返回此布局的首选维数。
void
removeLayoutComponent(Componentcomp)
从布局中移除指定的组件。
void
setAlignment(int align)
protectedgridbagconstraintsdefaultconstraints此字段保持包含默认值的网格包约束实例因此如果某个组件没有与其相关联的网格包约束则会分配给该组件一个defaultconstraints的副本
布局管理
1、流式布局FlowLayout
java.awt
类 FlowLayout
创建具有指定行数和列数的网格布局。
方法摘要
void
addLayoutComponent(Stringname,Componentcomp)
将具有指定名称的指定组件添加到布局。
int
getColumns()
获取此布局中的列数。
int
getHgap()
获取组件之间的水平间距。
int
getRows()
获取此布局中的行数。
int
getVgap()
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JFrame的常用方法
Container getContentPane() :返回此窗体的容器对象 JMenuBar getJMenuBar() :返回此窗体上设置的菜单栏。 JLayeredPane getLayeredPane() :返回此窗体的 layeredPane 对象。 void remove(Component comp):从该容器中移除指定组件。 void setContentPane(Container contentPane):设置 contentPane 属性。 void setDefaultCloseOperation(int operation) :设置用户在此窗体上发起 "close" 时默认
缓冲策略的新 JPanel。
• JPanel(LayoutManager layout) : 创建具有指定布局管理器的新缓 冲 JPanel。 • JPanel(LayoutManager layout, boolean isDoubleBuffered) :创建具 有指定布局管理器和缓冲策略的新 JPanel。
JPanel类主要方法:
• AccessibleContext getAccessibleContext():获取与此 JPanel 关联的 AccessibleContext。
• JFrame():构造一个初始时不可见的新窗体 • JFrame(GraphicsConfiguration gc) :以屏幕设备的指定 GraphicsConfiguration 和空白标题创建一个窗体 • JFrame(String title) :创建一个新的、初始不可见的、具有指定标题的窗 体 • JFrame(String title, GraphicsConfiguration gc) :创建一个具有指定标题和 指定屏幕设备的 GraphicsConfiguration窗体
例4-3演示了JFrame的基本使用方式,点击关闭窗口按钮采用了事件
处理,利用WindowAdapter实现了退出程序。
4.3 帮助实现布局的容器:JPanel
JPanel是一个放置其他图形组件(包括其它JPanel)的中间层容器,不 能独立存在,必须被添加到其他容器中(如JFrame)。
JPanel是一个空白容器类,提供容纳组件的空间,通常用于集成其他的
若干组件,使这些组件形成一个有机的整体,再增加到别的容器上。
JPanel是Swing包中一个非常重要的控件,在程序的开发中,经常会使 用到JPanel,这样可以大大的规范布局
JPanel的构造方法:
• JPanel() :创建具有双缓冲和流布局的新 JPanel。 • JPanel(boolean isDoubleBuffered) : 创建具有 FlowLayout 和指定
教学要求 1.掌握:Swing组件类的层次、用Swing创建图形用户 界面的基本方法,JFrame、JPanel和布局管理器的基本使 用方法及功能 2.理解:Swing容器与布局管理器的作用、计算器的 实现
4.1 Swing组件类的层次
Swing是围绕着一个称为JComponent的新组件构建的,而 JComponent则由AWT的容器类扩展而来。
、 JMenu,、JSlider,、JtextField。 不可编辑信息的显示:向用户显示不可编辑信息的组件,例如
JLabel、JProgressBar、ToolTip。
可编辑信息的显示:向用户显示能被编辑的格式化信息的组件, 如JColorChooser、JFileChoose,、JFileChooser,、Jtable, JtextArea。
Java桌面程序开发
目 录第1章• 认识 Nhomakorabeaava桌面程序 • 开发第一个Java桌面程序 • 事件处理机制 • 容器与布局
第2章
第3章
第4章
第5章
• 使用Swing常用组件
• 使用Swing高级组件 • 连上DB的Java桌面程序 • Java桌面程序实例:联系人管理
第6章
第7章
第8章
第4章 容器与布局
Swing组件分为:
顶层容器 中间层容器
基本组件
Swing组件的层次结构
组件从功能可以分为:
特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame、 LayeredPane,JRootPane。
基本控件:实现人机交互的组件,如Jbutton,、 ComboBox,、JList
执行的操作。
void setIconImage(Image image):设置此 frame 要显示在最小化图标中的图像。 void setJMenuBar(JMenuBar menubar):设置此窗体的菜单栏。
void update(Graphics g) :只是调用 paint(g)。
示例
例4-2 创建JFrame的实例(对象)来调用JFrame的方法,以此设计界 面窗口。
//把contentPane对象设置成为frame的内容面板;
JFrame窗口中的各面板
JFrame类的常用变量:
static int EXIT_ON_CLOSE :退出应用程序后的默认窗口关闭操作, 用于setDefaultCloseOperation(int)方法中
JFrame类的构造方法
4.2 创建窗体:JFrame
JFrame:Swing中用于创建桌面窗体的类 对JFrame添加组件有两种方式:
1、用getContentPane( )方法获得JFrame的内容面板,再对其加入组件: frame.getContentPane().add(childComponent) 2、建立一个JPanel或 JDesktopPane之类的中间容器,把组件添加到容器 中,用setContentPane()方法把该容器置为JFrame的内容面板: JPanel contentPane=new JPanel( ); //把其它组件添加到Jpanel中; frame.setContentPane(contentPane);