Swing程序设计Word文件下载.docx
- 文档编号:20558110
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:49
- 大小:799.28KB
Swing程序设计Word文件下载.docx
《Swing程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《Swing程序设计Word文件下载.docx(49页珍藏版)》请在冰豆网上搜索。
布局的定义:
将组件合理有序的排列和分布在容器中(包括组件的位置、大小);
●布局管理器(layoutmanager)
负责确定组件在容器中的位置和大小。
调用容器的setLayout(布局管理器对象)方法,为容器指定某种布局管理器的一个对象。
当容器需要定位组件和确定组件大小时,就会给布局管理器对象发消息,让它完成该项工作。
awt中常见的布局管理器有:
BorderLoyout(边界布局管理器)
简介:
分为北、南、东、西、中;
FlowLayout(流式布局管理器)
组件在一行中从左至右水平排列,排满后折行;
GridLayout(网格布局管理器)
以行和列的网格形式安排组件;
GridBagLayout布局管理器
更复杂、功能更强的网格布局;
CardLayout布局管理器
每一个组件作为一个卡片,容器仅显示多个卡片中的某一个;
二、JFrame容器(常用窗体)
知识点:
1、如何创建窗体
Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。
通常,这个容器用来包含和显示组件。
如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置,也可以使用remove()方法将组件从容器中删除。
2、窗体的关闭方式
创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法关闭窗体。
Java为窗体关闭提供了多种方式,常用的有以下4种:
●EXIT_ON_CLOSE表示退出应用程序默认窗口关闭;
●DO_NOTHING_ON_CLOSE表示什么都不做就将窗体关闭;
●DISPOSE_ON_CLOSE表示任何注册监听程序对象后会自动隐藏并释放窗体;
●HIDE_ON_CLOSE表示隐藏窗口的默认窗口关闭;
3、JDialog窗体
JDialog窗体是Swing组件中的对话框,它继承了AWT组件中java.awt.Dialog类。
功能:
从一个窗体中弹出另一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样。
JDialog窗体实质上就是另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。
例子:
importjavax.swing.*;
publicclassTest{
publicstaticvoidmain(String[]args){
/*创建窗体*/
JFramejf=newJFrame();
//创建窗体对象
jf.setTitle("
用户界面"
);
//设置窗体标题
jf.setSize(260,180);
//设置窗体大小
jf.setLocation(100,270);
//设置窗体位置
jf.setResizable(false);
//设置窗体是否可以调整大小
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体关闭方式
jf.setVisible(true);
//设置窗体可见性
}
}
没有设置标题、大小的窗体:
设置标题、大小的窗体:
扩展:
1、设置组件的位置和大小的方法:
setBounds(intx,inty,intwidth,intheight)方法相当于:
setLocation(intx,inty)和setSize(intwidth,intheight)
2、将软件的位置Location设置为:
水平居中,垂直居中
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);
三、标签组件与图标
●概述
在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。
在应用程序的用户界面中,一个简短的文本标签可以使用户知道这些组件的目的,所以标签在Swing中是比较常用的组件。
在本节中将探讨Swing标签的用法、如何创建标签,以及如何在标签上放置文本与图标。
●标签组件Jlabel
标签由JLabel类定义,标签可以显示一行只读文本、一个图像或带图像的文本,它并不能产生任何类型的事件,只是简单地显示文本与图片,但是可以使用标签的特性指定标签上文本的对齐方式。
●图标组件Icon
Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途或装饰组件。
图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。
●创建图标
在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。
如果使用Icon接口,必须实现Icon接口中的3个方法。
●例子
importjava.awt.*;
publicclassDrawIconimplementsIcon{
privateintwidth;
privateintheight;
publicvoidpaintIcon(Componentc,Graphicsg,intx,inty){
g.fillOval(x,y,width,height);
publicintgetIconWidth(){
//TODO自动生成的方法存根
returnthis.width;
publicintgetIconHeight(){
returnthis.height;
publicDrawIcon(intwidth,intheight){
this.width=width;
this.height=height;
DrawIconicon=newDrawIcon(15,15);
JLabeljl1=newJLabel("
测试"
icon,SwingConstants.CENTER);
Containerc=jf.getContentPane();
c.add(jl1);
jf.setSize(200,200);
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
jf.setLocation((screenSize.width-jf.getWidth())/2,(screenSize.height-jf.getHeight())/2);
●创建图片图标
Swing中的图标除了可以绘制之外,还可以使用某个特定的图片创建。
Swing利用javax.swing.ImageIcon类根据现有图片创建图标,ImageIcon类实现了Icon接口,同时Java支持多种图片格式。
import.URL;
publicclassTestextendsJFrame{
publicTest(){
Containerc=getContentPane();
JLabeljl=newJLabel("
这是一个JFrame窗体"
SwingConstants.CENTER);
URLurl=Test.class.getResource("
imageButton.jpg"
Iconicon=newImageIcon(url);
jl.setIcon(icon);
//设置标签的图标
jl.setHorizontalAlignment(SwingConstants.CENTER);
//设置标签水平对齐方式
jl.setOpaque(true);
//设置标签为不透明状态
c.add(jl);
setTitle("
图片图标"
setSize(250,150);
setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2);
//设置组件的位置为:
水平和垂直居中
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
newTest();
运行结果:
注意:
java.lang.Class类中的getResource()方法可以获取资源文件的URL路径。
例子中该方法的参数是imageButton.jpg,这个路径是相对于Test类文件的,所以可将图片文件与类文件放在同一个文件夹下。
四、常用布局管理器
Swing提供的常用布局管理器包括边界布局管理器、流式布局管理器、网格布局管理器。
●绝对布局
顾名思义,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式指定组件的位置。
使用绝对布局的步骤如下:
(1)使用Container.setLayout(null)方法取消布局管理器;
(2)使用Component.setBounds()方法设置每个组件的位置和大小;
/*声明组件*/
privateJButtonan1;
publicTest(Stringtitle){
c.setLayout(null);
/*创建组件*/
an1=newJButton("
确定"
an1.setSize(80,40);
//设置按钮的大小,如果没有此语句,按钮将无法显示,因为它的大小为0;
/*添加组件*/
c.add(an1);
/*设置窗体属性*/
setTitle(title);
setSize(200,150);
Dimensionscreensize=Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screensize.width-this.getWidth())/2,(screensize.height-this.getHeight())/2);
newTest("
绝对布局"
运行结果如下:
●边界布局管理器(BorderLayout)
在默认不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器。
边界布局管理器还可以将容器划分为东、西、南、北、中5个区域,可以将组件加入到这5个区域中。
容器调用Container类的add()方法添加组件时可以设置此组件在边界布局管理器中的区域,区域的控制可以由BorderLayout类中的成员变量来决定。
●格式
Containerc=this.getContentPane();
c.setLayout(newBorderLayout());
c.add(newJButton(“确定”),BorderLayout.EAST);
//将确定按钮添加到容器的底部并填充
c.add(newJButton(“取消”));
//将取消按钮添加到容器的中部并填充至个区域的边界
如果不是五个按钮全部添加,则会以扩充中部为主进行填充,但中部不会被其他四个填充。
●流式布局管理器(FlowLayout)
流式布局管理器是布局管理器中最基本的布局管理器。
流式布局管理器在整个容器中的布局正如其名,像“流”一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。
默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置。
c.setLayout(newFlowLayout(2,10,10));
//设置容器的布局管理器为流式布局管理器,采用右对齐方式摆放各组件;
●网格布局管理器(GridLayout)
网格布局管理器将容器划分为网格,所以组件可以按行和列进行排列。
在网格布局管理器中,每一个组件的大小都相同,并且网格中空格的个数由网格的行数和列数决定,如一个两行两列的网格能产生4个大小相等的网格。
组件从网格的左上角开始,按照从左到右、从上到下的顺序加入到网格中,而且每一个组件都会填满整个网格,改变窗体的大小,组件的大小也会随之改变。
c.setLayout(newGridLayout(3,3,5,5));
//设置容器的管理器为7行3列宽为5像素高为5像素的网格布局管理器;
拓展
●创建基本窗体的步骤:
1、导入swt和swing包;
2、继承Jframe类;
3、在类中定义组件;
4、在构造方法中创建组件;
5、在构造方法中添加组件;
6、设置窗体属性;
7、显示窗体;
8、在主函数中创建对象;
9、所有布局管理器都可以添加任意组件;
五、高级布局管理器
Swing还提供了一些高级布局管理器,如箱式布局管理器、卡片布局管理器、网格组布局管理器以及弹簧布局管理器,通过使用这些布局管理器,可以设计出更好、更适用的程序界面。
在讲解过程中为了便于读者理解,结合了大量的图例,还针对每个知识点进行了举例。
箱式布局管理器BoxLayout
箱式布局管理器用来管理一组水平或垂直排列的组件。
如果是用来管理一组水平排列的组件,则称为水平箱;
如果是用来管理一组垂直排列的组件,则称为垂直箱。
BoxLayout类仅提供了一个构造方法BoxLayout(Containertarget,intaxis),其入口参数target为要采用该布局方式的容器对象;
入口参数axis为要采用的布局方式,如果将其设置为静态常量X_AXIS,表示创建一个水平箱,组件将从左到右排列,设置为静态常量Y_AXIS则表示创建一个垂直箱,组件将从上到下排列。
无论水平箱还是垂直箱,当将窗体调小至不能显示所有组件时,组件仍会排列在一行或一列,组件按照添加到容器中的先后顺序进行排列。
默认情况下,由箱式布局管理器实现的组件之间没有间距,如果要在组件之间设置间距,可以通过使用Box类提供的6个不可见组件实现,这些组件就是专门用来设置箱式布局管理器的。
六、常用面板
面板也是一个Swing容器,它可以作为容器容纳其他组件,但它也必须被添加到其他容器中。
Swing中常用的面板包括JPanel面板以及JScrollPane面板。
JPanel面板默认使用流式布局管理器,窗体默认使用边界布局管理器。
/*定义组件*/
privateJPanelmb1,mb2;
privateJButtonan1,an2,an3,an4,an5;
newTest();
//创建本类对象
Containerc=this.getContentPane();
mb1=newJPanel();
mb2=newJPanel();
苹果"
an2=newJButton("
香蕉"
an3=newJButton("
水果"
an4=newJButton("
白菜"
an5=newJButton("
萝卜"
/*将组件添加到窗体中*/
mb1.add(an1);
mb1.add(an2);
mb2.add(an4);
mb2.add(an5);
c.add(mb1,BorderLayout.NORTH);
c.add(an3);
c.add(mb2,BorderLayout.SOUTH);
this.setTitle("
布局综合应用"
this.setSize(300,200);
this.setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*设置窗体可见性*/
this.setVisible(true);
特别注意:
在窗体默认使用BorderLayout布局管理器时,请指明每个组件添加的位置,以免被覆盖。
●JscrollPane面板
在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容的情况,这时可以使用JscrollPane面板。
JscrollPane面板是带滚动条的面板,它也是一种容器,但是JscrollPane只能放置一个组件,并且不可以使用布局管理器。
如果需要在JscrollPane面板中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JscrollPane组件上。
privateJTextAreata;
privateJScrollPanemb1;
/*将窗体转化成容器*/
ta=newJTextArea("
请输入内容"
20,50);
mb1=newJScrollPane(ta);
/*将组件添加到窗体容器中*/
c.add(mb1);
滚动面板"
this.setSize(200,200);
this.setVisible(tr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Swing 程序设计