Swing常见布局管理器总结

Swing常见布局管理器总结
Swing常见布局管理器总结

1、BorderLayout 边界布局管理器

北区:页首(PAGE_START)north

南区:页尾(PAGE_END)south

西区:行首(LINE_START) west

东区:行尾(LINE_END)east

我们也可以在内容窗格的顶头放置工具栏,底部放置状态栏

工具栏和状态栏的高度都是不变的,但长度随框架大小而改变

这正好是边界型布局的北区、南区的特点

因此,北区和南区可以放置工具栏和状态栏,同时会根据框架的大小自动调整面板、工具栏和状态栏的大小

对于此类界面,可以将主工作区放在中间区里,辅助工具区放在周边的东、南、西、北四个区域的某一个区域中:

缺省情况下,边界型布局的各区之间没有空隙,组件彼此靠在一起

可以指定区域间的水平间隙和垂直间隙:

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout(5, 5));

2、BoxLayout(盒子布局器)

它没有空构造函数,必须给出两个参数:

需要它管理的容器对象

组件排列的轴线方向,轴线方向有两种:

LINE_AXIS(或者X_AXIS)表示组件按横线排成一行;

PAGE_AXIS(或者Y_AXIS)表示组件按纵向排成一列

组件的对齐方式(Alignment):

对于纵向排列的组件,有3种对齐方式:

btn1.setAlignmentX(Component.LEFT_ALIGNMENT);

btn1.setAlignmentX(Component.CENTER_ALIGNMENT);

btn1.setAlignmentX(Component.RIGHT_ALIGNMENT);

对齐方式是组件本身的性质,而不是布局管理器的性质。因此,你需要调用每个组件本身的setAlignmentX函数来设定对齐方式

这个界面的问题在于:“确定”和“取消”按钮之间离得太近

为解决此问题,我们在这两个按钮之间插入一块固定宽度的刚性区域空白组件,以分隔两个组件:

panel.add(new JButton("确定"));

panel.add(Box.createRigidArea(new Dimension(15,0)));

panel.add(new JButton("取消")); 在二个按钮中间插入一个空白宽为15的空白区域

界面的另一个问题是“确定”和“取消”按钮一般习惯靠右放置,而不是靠左放置

为此,我们在“确定”按钮前放一块水平胶状区域,它的作用是尽量扩展自身,顶住两边的组件,如下面的示意图所示:

panel.add(Box.createHorizontalGlue());

panel.add(new JButton("确定"));

panel.add(Box.createRigidArea(new Dimension(15,0)));

panel.add(new JButton("取消"));

添加水平胶状区域以后,它就会把“确定”按钮向右顶,从而将按钮靠右放置,效果如下图所示:

自定义区域的作用类似于胶状区域

但它的最小、最大尺寸有一定的限制,不能象胶状区域那样无限制缩小或扩张

3、卡片布局管理器

卡片式布局(CardLayout)

卡片式布局的面板中有两个大小相同的子面板card1和card2:

cards = new JPanel(new CardLayout());

cards.add(card1, BUTTONPANEL);

cards.add(card2, TEXTPANEL);

其中“BUTTONPANEL”和“TEXTPANEL”是两个字符串常量,用来表示两个子面板:

final static String BUTTONPANEL = "显示按钮";

final static String TEXTPANEL = "显示文本框";

子面板1中放置的是按钮:

JPanel card1 = new JPanel();

card1.add(new JButton("新建"));

card1.add(new JButton("打开"));

card1.add(new JButton("保存"));

card1.add(new JButton(“新建”));

子面板2中放置的是文本框:

JPanel card2 = new JPanel();

card2.add(new JTextField("文本框", 20));

当你想要显示某一个面板时,只要调用卡片式布局管理器的show函数,并在参数中给出卡片所对应的字符串即可

下面的代码会显示面板card2,因为和card2关联的字符串TEXTPANEL的内容是“显示文本框”,与show函数的第二个参数相符合:

CardLayout cl = (CardLayout)(cards.getLayout());

cl.show(cards, TEXTPANEL);

// 最后注册事件完成该操作

jcb.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e) {

String text = (String)e.getItem();

CardLayout layout = (CardLayout) cardPane.getLayout();

layout.show(cardPane, text);

}

});

卡片式布局与标签页面板的异同点:

都可以在一个有限区域内显示同样大小的多页内容

由于标签页面板有自己的图形界面,因此使用起来比卡片式布局简单一些

但标签页面板的灵活性不如卡片式布局高

可以根据自己的实际需要来选择标签页面板或卡片式布局

4、流式布局管理器

流式布局(FlowLayout)

流式布局的构造函数有3种形式:

public FlowLayout()

public FlowLayout(int alignment)

public FlowLayout(int alignment, int horizontalGap, int verticalGap)

第一种构造函数是按缺省形式布局

第二种构造函数可以指定排列对齐方式:

左对齐(FlowLayout.LEADING)

居中对齐(FlowLayout.CENTER)

靠右对齐(FlowLayout. TRAILING

第三种的构造形式如下

panel.setLayout(new FlowLayout(FlowLayout.LEADING, 15, 15));

在此例中,将组件间的横向和纵向间隙都扩大到了15个象素

5、表格型布局

表格型布局(GridLayout)

在构造函数中,行、列数至少指定一个,另一个未指定可以指定0 行或者0列。

但一般不鼓励同时指定行、列数

因为一旦添加的组件太多或太少,Java会调整表格的行列数以符合组件数量,这样可能导致产生的界面与设想的界面完全不同

如果只指定行数或列数,出现问题的可能性就小得多了

在构造函数中还可以设定组件的横向、纵向间隙(缺省的间隙是0)。函数形式如下:public GridLayout(int rows, int columns, int horizontalGap, int verticalGap)

下面的例子将组件间的间隙设为5:

panel.setLayout(new GridLayout(0, 2, 5, 5));

6、表格包型布局(GridBagLayout)

a)表格包型布局的灵活性主要体现在它可以对每个单元格、每个组件进行配置

b)它需要表格包约束(GridBagConstraints)类的辅助。这个约束类的作用只有一个,

就是配置每个单元格里的组件

c)下面的代码用于在表格包中加入组件:

panel.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

panel.add(component, c);

代码的第一行设置布局管理器为表格包型

第二行代码产生一个约束对象

随后对约束对象进行配置

最后调用add函数添加组件,add函数的第二个参数为约束对象c,组件的配置信息就存储在约束对象c里

c.fill = GridBagConstraints.HORIZONTAL;

其它值有HORIZONTAL(宽度),表示将组件拉宽到与单元格宽度一致,但高度不变VERTICAL(高度),表示将组件高度提升到与单元格高度一致,但宽度不变

BOTH(同时),表示将组件的高度和宽度都拉伸到与单元格一致

“gridx”,“gridy”:组件所在的单元格位置

例如:gridx = 0, gridy = 0,表示组件位于左上角的单元格

gridx = 1, gridy = 2表示组件位于第2列、第3行的单元格

建议对每个组件都指定它所在的单元格

“weightx”,“weighty”:确定当用户拉大主程序界面时,各单元格如何分配多余的空间

这通过单元格的权重(weight)来确定

当用户拉大了窗口的宽度时,权重为0的单元格的宽度不变,其它权重大于0的单元格按比例分配多出来的宽度

weighty用于设置单元格高度的权重

权重的绝对值不重要,关键是其相对比例

3个按钮所在单元格的权重都是0.5时:

第3个按钮所在单元格的权重为0时:

“gridwidth”,“gridheight”:分别表示这个组件在宽度和高度上分别占用了几个单元格

变量的值表示单元格个数,而不是象素数

本例中,由于第四个按钮很长,一个单元格放不下,因此设gridwidth = 3

也就是横向占据3个单元格的位置,但纵向仍然只占据了一个单元格的位置

“ipadx”,“ipady”:设定组件内部的填充宽度或高度

由于填充是针对两边的,因此组件的高度至少应为它的最小高度加上ipady*2

本例中,为了提高第4个按钮的高度,同时将字体居中,设置它的内部填充高度为40

“insets”:定义组件的外部填充,也就是说,在组件和单元格之间的空隙是多少

。外部填充值是通过一个Insets对象来指定的,它的构造函数的4个参数分别是组件顶部、左侧、底部、右侧的填充值

c.insets = new Insets(10,0,0,0);

本例中,指定第5个按钮的顶部与单元格之间有10个象素的空隙

“anchor”:设定当组件小于单元格时,应该怎样放置单元格。组件有9种放置方式:

●FIRST_LINE_START(左上角),

●PAGE_START(上部的中间),

●FIRST_LINE_END(右上角),

●LINE_START(左侧的中间),

●CENTER(正中间),

●LINE_END(右侧的中间),

●LAST_LINE_START(左下角),

●PAGE_END(下部的中间),

●LAST_LINE_END(右下角)

在添加组件约束的时候,如果每个组件都共用一个约束,那么要注意还原设定值

例如第四个按钮设定ipady为40,但第五个按钮不需要设置内部填充

因此在定义第五个按钮的约束时要将ipady设为0,否则前面定义的约束会一直传给后面的组件

相反,本例中fill属性就从头传到尾,为所有单元格所用

Java集合类知识点总结

Java集合类 Java集合类 (1) 1.Map (3) 1.1.HashMap (3) 1.1.1.底层实现 (3) 1.1.2.特点 (3) 1.1.3.源码分析 (4) 1.1.4.多线程可能出现的问题 (5) 1.2.ConcurrentHashMap (6) 1.2.1.底层实现 (6) 1.2.2.源码分析 (7) 1.3.HashTable (9) 1.3.1.HashTable是线程安全的,因为所有方法上都加了synchronized关键 字。9 1.3.2.HashTable的key和value都不可以为null。 (9) 1.3.3.扩容时,capacity=2*capacity+1 (9) 1.3.4.数组默认大小为11 (9) 1.3.5.查找下标时,没有使用hash&length-1,而是直接进行计算的 (9) 1.4.TreeMap (9) 1.4.1.底层实现为红黑树 (9) 1.4. 2.TreeMap是一个有序的key-value集合,基于红黑树实现。该映射根据 其键的自然顺序进行排序,或者根据创建时提供的Comparator进行排序 (10) 1.4.3.接口实现 (10) 1.4.4.Entry (11) 1.5.LinkedHashMap (11) 1.5.1.底层是数组+链表+红黑树+双向链表 (11) 1.5.2.维护链表顺序和访问顺序 (11) 1.5.3.LinkedHashMap 可以通过构造参数 accessOrder 来指定双向链表是否在 元素被访问后改变其在双向链表中的位置。 (11) 1.5.4.当accessOrder为true时,get方法和put方法都会调用recordAccess 方法使得最近使用的Entry移到双向链表的末尾;当accessOrder为默认值 false时,recordAccess方法什么也不会做。 (11) 1.5.5.LRU实现 (11) 2.Collection (11) 2.1.List (12) 2.1.1.ArrayList (12) 2.1.2.LinkedList (13) 2.1.3.CopyOnWriteArrayList (13) 2.2.Set (14) 2.2.1.HashSet (14)

实验5 JAVA常用类

山西大学计算机与信息技术学院 实验报告 姓名学号专业班级 课程名称 Java实验实验日期成绩指导教师批改日期 实验5 JAVA常用类实验名称 一.实验目的: (1)掌握常用的String,StringBuffer(StringBuilder)类的构造方法的使用;(2)掌握字符串的比较方法,尤其equals方法和==比较的区别; (3)掌握String类常用方法的使用; (4)掌握字符串与字符数组和byte数组之间的转换方法; (5)Date,Math,PrintWriter,Scanner类的常用方法。 二.实验内容 1.二进制数转换为十六进制数(此程序参考例题249页9. 2.13) 程序源代码 import java.util.*; public class BinToHexConversion{ //二进制转化为十六进制的方法 public static String binToHex(String bin){ int temp; //二进制转化为十六进制的位数 if(bin.length()%4==0) temp = bin.length()/4; else temp = bin.length()/4 + 1; char []hex = new char[temp]; //十六进制数的字符形式 int []hexDec = new int[temp];//十六进制数的十进制数形式 int j = 0; for(int i=0;i=0&&dec<10) return (char)('0'+dec-0); else if(dec>=10&&dec<=15) return (char)('A'+dec-10); else return '@'; }

Java专业实习总结(精选3篇)

Java专业实习总结(精选3篇) Java专业实习总结 紧张又充实的实习生活又将谢下帷幕,回顾这段时间的实习经历,收获的不仅岁月,还有成长,为此就要认真思考实习总结如何写了。那么如何把实习总结做到重点突出呢?以下是收集整理的Java 专业实习总结,欢迎阅读,希望大家能够喜欢。 Java专业实习总结1 初次涉及Java领域,感觉到Java入门是好像没有C,C++入门快,工具也没有什么TurboC,VisualC++好用,什么JA_HOME,CLASSPATH,虚拟机等概念都是初次基础,旁边的人都很少用Java的。感觉Java就是做Applet的。让我不可思议的是JA2,JDK,J2SE,J2EE,J2ME等新名词在自己的脑海里蔓延。搭起Java开发环境后,记得刚开始还是用UltraEdit编辑并编译的慢慢的改用JCreator了,要开始干项目了,以前从书上看到的东西,在项目中有了很好的机会去温习,开始主要是用Swing,开发桌面系统,放置一个按钮怎么也放不好,后来才知道有一个布局管理器。后来开始涉及到数据库访问,JDBC。随后Java规范了。最开始*的规范是JDBCSpecification,很多概念一目了然,尤其是DATABASE的事务性控制,自己对于她的理解慢慢的有了较为深入的了解。对于开发C/S结构,比如,Swing+JDBC,开发数据库应用系统,让我学会开发两层结构的应用系

统。 开发豆豆网时,基于Linux+JSP+JavaBean+Oracl的系统。不同于Swing+JDBC的开发模式,系统之间多了一层;同时,很多开发技术和面向左面系统不一样,比如分页技术。 完成项目后,自己对于Java的很多方面都比较了解了。开始思考一个问题,J2EE是什么东西?。我们学习Java大概有3个方向,第一,桌面系统,包括C/S结构;第二,J2ME,面向无限领域,很有潜力的家伙,看*的手机用户就知道了。第三,面向企业应用、计算的平台,J2EE。 通过实习,我自身发生了重大的转变,我相信我会在JA开发这条路上走的更长更远。 实习虽然结束了但是给我的感触很大。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名即将毕业的大学生更应该把学习作为保持工作积极性的重要途径。 实习,是开端也是结束。展现在自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的责任。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我。 实习的同时也让我了解到了自己的不足,我会继续努力,完善自我。对于学校的精心安排和指导老师的用心辅导非常感谢。 Java专业实习总结2 在经过三年的专业课系统的学习之后,在今年的暑假我迎来了第一次的实习。经过深思熟虑之后,我选择了软件开发的实习与学习。

java swing布局管理器

学籍管理系统 Java Swing布局管理器 科尔沁艺术职业学院计算机科学与技术系2008级(普理)班曹容赫 指导教师苏春源 摘要:院校规模不断扩大,学生数量不断增多,原来的人工记录的方式,甚至是一般的数据存储管理软件不能满足学生管理的需求。传统管理方式维护数据性能低、查询信息不方便、选课效率低、维护成绩信息的工作量大,为弥补以上缺陷,便于信息管理与维护,提高管理效率,从而开发此学籍管理系统,以实现学院的信息化管理。 关键词Java.*Swing 用户名管理 Kerqin Art Institute of evaluating teaching career system Kerqin Art Vocational College, Department of Computer Science and Technology 2008 (2)Cao ronghe Abstract:The institutions have been expanding, increasing the number of students, the original way of manual records, or even a general data storage management software can not meet the management needs of students. Performance of the traditional low-maintenance data management, query information is not convenient, course selection, low efficiency, heavy workload to maintain performance information for more than make up for deficiencies, facilitate information management and maintenance, and improve management efficiency, in order to develop the school management system to achieve School of Information Management. Key words java*swing The user's name manages 引言 为了学院更方便的管理各院系开设的课程,让学生更方便地选课并及时了解个人课程及成绩信息,同时提高学院的信息化水平,学籍管理系统对成绩管理、学籍管理、班级管理、课程设置、选课信息等几个方面进行管理,真正实现管理信息化,且弥补了过去传统的数据信息管理的低效率问题。 1、需求分析 经过讨论此系统的开发是有必要的,针对此系统的使用群体有学生、家长、教师等。此系统可以根据相应信息对学生信息进行更有效的管理。还应用了Java *Swing 来编写主体布局界面,使操作更简单、更实用。

java实习总结

河北科技师范学院 欧美学院 《JA V A程序设计课程设》 个人实习总结 实习类型教学实习 实习单位欧美学院 指导教师丁亚周 所在院(系)信息技术系 班级 1202 学生姓名于红 学号 9211120214

一、实习时间和地点 时间:2015.3.17-2015.4.17 地点:欧美学院F311,F310 二、实习的内容 (1)本组课题及本人任务; 我们小组设计的是图书管理系统,包括图书信息管理,读者信息管理,管理员信息管理,借阅信息管理,还书信息管理,逾期罚款或损坏赔偿信息管理和数据库。我负责的是图书信息管理,包括对图书信息的查阅,删除,修改和增加。可以满足图书馆的一些日常活动 (2)程序功能简介; 这次实践课我们小组设计的图书管理系统包括了图书信息管理,读者信息管理,管理员信息管理,借阅信息管理,还书信息管理,逾期罚款或损坏赔偿信息管理。主要包含对信息的查找,增加,删除和修改。如下图所示: (3)主体内容(简要说明总体情况,详细介绍本人任务部分): 1.设计分析; 图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立前端应用程序的开发两个方面.对于前者要求建立起数据一致性和完整性强、数据安全性好的库.而对于后者则要求应用程序功能完备,易使用等特点.本组结合简单图书馆的要求,设计了数据库结构和应用程序.系统运行结果证明,本文所设计的图书管理系统可以满足图书馆工作人员的需要.

2.程序结构(画流程图) 3.各模块的功能及程序说明; 我所负责的模块是图书信息管理,主要包含四个方面,对图书信息的查找,增加,修改,删除。查找:可以满足图书管理者查询数目的要求,在这个模块,可已使用多种方式查找,包括无条件查询和条件查询,无条件查询是将所有的书一起都找出来,条件查询又包括图书编号查询和模糊条件,这个可以满足图书管理者对具体的一本书查询的要求;增加:按照传统的增加方式进行增加,在新买书时,可以方便图书管理者对数据库进行增加;修改:可以修改图书的名称,适合在录入信息错误时使用;删除:当撤销破旧书目时,可以使用,我所做的所有操作都会对数据库产生影响。 4. 源程序; case 1: System.out.println(" 图书信息: "); System.out.println(" 1. 查询图书信息: "); System.out.println(" 2. 插入图书信息: "); System.out.println(" 3. 删除图书信息: ");

java开发技术总结

数据库 oracle-->数据库管理系统-->SQL、PL/SQL-->Java(JDBC+SQL) DBA,数据库编程程序员 1.概念导论 1)什么是数据库 有组织和结构存储数据。可以存储 字符、字节、图形、图像等类型数据 DB(数据库):数据集合 DBMS(数据库管理系统):对数据集合进行管理和操作的软件 --Oracle --DB2 --MySQL --SQLSERVER JDBC 1.什么是JDBC 全称Java DataBase Connection,Java数据库访问。 JDBC是Java访问数据库的一项技术 JDBC是SUN推出的Java访问数据库的一套标准。由一系列接口构成。 各个数据库厂商负责提供JDBC接口API的实现包。 开发者只需要掌握JDBC接口的使用,就可以实现对各种数据库的操作,不需要了解开发商的实现类。 XML 1、什么是xml(xtendsible markup language可扩 展的标记语言)? 1)定义 基于文本的通用的数据保存格式。 (1)通用的点的坐标 Point类point对象(x=10,y=20) a,序列化 b,数据库表 c,文件 ... (2)数据格式 10 20

HTML 知识准备 1、分层:表现层:UI界面(DOS界面、桌面类型、web类型) 业务层: 数据层:文件、Oracle数据库 2、Web类型的应用程序----B/S类型 打开Browser,输入URL,浏览器将请求发送到服务器 服务器得到请求,分析,返回响应 浏览器得到响应,解析(翻译),显示为页面 3、web学习阶段 客户端技术:HTML+CSS+Javascript---Web基础 服务器端技术:JSP、PHP、https://www.360docs.net/doc/c79255976.html, 4、web基础的课程 HTML:页面的创建 CSS:页面的外观 JavaScript:页面的动态效果和交互行为--3 一:HTML概述 1、超文本标记语言:一种编写页面的纯文本的标记语言,文件以.html或者.htm为后缀,依靠浏览器运行显示----解释性的语言 2、标记:一些用<>括起来的内容,特殊的显示 3、主流浏览器:IE/Firefox/Chrome/ 4、浏览器兼容性:符合标准规范,具体问题 CSS 一:CSS概述 1、CSS:级联样式表(层叠样式表) 2、特征:为页面定义外观的语言,实现内容和表现的分离,多个样式可以合为一个,如果冲突,以优先级为准 二:基础语法 1、语法:属性名称:值;属性名称:值;比如--color:red; 2、如何应用 方式一(内联方式):<元素style=""/>---将样式直接定义在元素的style属性里 方式二(内部样式表):在页面的head里的style里定义样式 方式三(外部样式表):定义一个单独的.css的文件(定义样式);然后,在页面的head里用link引入---推荐方式 3、外部样式表的优点:实现内容和表现的分离,提高代码的可重用性和可维护性

Java常用类和方法面试题+答案

2015年12月20日18:25:21 Java常用类和方法重点总结 作者:数据分析玩家 1、简述Java中内存分配的问题 1>凡是new()出来的东西,都是在堆中进行分配的 2>局部变量【数据类型+变量名】都是在栈中进行分配的 3>静态变量【static】和字符串常量【“String”】都是在数据区进行分配的 4>方法【代码】都是在代码区进行存放的 2、简述Java中Object类的地位 1>Java中所有的类【自己定义的类以及Sun公司提供的类】都默认自动继承了Object类 2>Java中所有的类都从Object类中继承了toString()方法、hashCode()方法和equals()等方法 3、简述Object类中toString()方法的注意事项 1>toString()方法的返回值是一个字符串 2>toString()方法返回的是类的名字和该对象的哈希码组 成的一个字符串,即toString()方法返回的是该对象的字符串表示形式 3>在Java中System.out.println(类对象名)实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString(),toString方法的好处是在碰到

println方法的时候会被自动调用,不用显示的写出来 4>建议所有的子类都重写从Object类中继承过来toString 方法,否则toString方法的返回值没有什么实际含义 4、简述Object类中equals()方法的注意事项 1>equals方法的返回值为true或false 2>Object类中equals方法只有在两个对象是同一块内存区域时,即不但内容相同、地址还必须相同时才返回true,否则即便内容相同、如果地址不同只会返回false 3>重写Object类中的equals方法目的在于:保证只要两个对象的内容相同,equals方法就返回true 5、简述Object类中hashCode()方法的注意事项 1>哈希码原本指的是内存空间地址的十六进制表示形式 2>hashCode()方法返回的是该对象的哈希码、即该对象的真实内存地址的十六进制表示形式,但是重写完hashCode()方法之后,返回的不再是该对象真实内存地址的十六进制表示形式 6、学习Java中toString方法、equals方法、hashCode方法共同的一个注意事项 在Java中,凡是动态分配的内存都是没有名字的,而是将其地址赋给一个指针变量【引用】,用指针变量去代表这个事物,所以引用和动态分配的内存有本质上的区别,但是在学习Java中的toString方法、equals方法和hashCode方

java的布局管理

https://www.360docs.net/doc/c79255976.html,/liujun13579/article/details/7772215 java.awt包中大约有 FlowLayout 流式布局 BorderLayout 边框式布局 GridLayout 网格布局 CardLayout 卡片布局 GridBagLayout 复杂的网格布局 javax.swing包中大约有如下布局 BoxLayout 盒式布局 OverlayLayout 重叠布局 ScrollPaneLayout 类JScrollPane使用的布局管理器ViewportLayout 类JViewport使用的布局管理器 详解:

实例:对齐方式 // FlowLayoutDemo.java importjavax.swing.*; importjava.awt.*; public classFlowLayoutDemo extends JFrame { public FlowLayoutDemo() { //设置窗体为流式布局,无参数默认为居中对齐setLayout(new FlowLayout()); //设置窗体中显示的字体样式 setFont(new Font("Helvetica",Font.PLAIN, 14)); //将按钮添加到窗体中

getContentPane().add(newJButton("Button 1")); getContentPane().add(new JButton("Button 2")); getContentPane().add(new JButton("Button3")); getContentPane().add(newJButton("Button 4")); } public static void main(String args[]) { FlowLayoutDemo window = newFlowLayoutDemo(); window.setTitle("流式布局"); //该代码依据放置的组件设定窗口的大小使之正好能容纳你放置的所有组件 window.pack(); window.setVisible(true); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setLocationRelativeTo(null); //让窗体居中显示 } }

java基础总结

第一章初识java 一、java语言的历史 ●第一代java语言:Oak 二、java语言的现状 ?Java SE:主要用于桌面程序的开发。 ?Java EE:主要用于网页程序的开发。 ?Java ME:主要用于嵌入式系统程序的开发。(安卓)三、java语言的特点 ●跨平台(不同的操作系统都可运行) ●简单(没有直接使用指针) ●面向对象(世间万物皆为对象) ●半编译半解释(java文件---class文件----虚拟机) ●分布式(多个客户端访问、通过服务器的配置分发到 不同的服务器) ●健壮(异常的处理) ●安全(任何语言都具备、虚拟机沙箱原理) ●多线程、高性能、动态 四、java语言与C、C++语言的不同与区别 ●自动内存管理:Java对于内存的分配是动态的,并具 有垃圾回收机制。 ●不在类外定义全局变量。 ●Java中将不再使用goto语句。

●Java中取消了指针。 ●运行时系统对类型转换进行类型相容性检查 ●Java不支持头文件,使用import与其它类通讯。 ●Java中不包含结构和联合;所有的内容都封装在类中。 ●Java中不支持宏,它通过final 关键字来声明一个常 量。 ●Java不支持多重继承,可以通过Java中的接口实现 多重继承的功能。 ●CC++ 一般情况下都是偏硬件的,java一般偏软件(应 用、基于浏览器) ●(补充).net、php (网页制作比较快捷)、在安全级 别要求高的企业一般使用java(银行、政府系统) 五、环境的搭建 1、默认路径如下 ●C:\Program Files\Java\jdk1.6.0_02:提供编程中需要 的api包 ●C:\Program Files\Java\jre1.6.0_02:虚拟机文件所在的 位置 2.安装后各个文件夹代表的含义

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

JAVA实训总结

J A V A程序设计课程实训报告 一、实训目的 知识目标 1.了解图形用户界面的编程思路及方法; 2.了解事件及事件处理机制; 3.掌握常用的图形用户界面组件; 4.掌握容器布局的设置方法及组件的添加方法; 5.掌握常见事件类型及事件处理方法; 能力目标 1.与客户沟通的基本能力; 2.团队协作的基本能力; 3.编程的良好习惯; 4.软件调试和测试的能力; 5.查阅文献的能力; 二、项目设置: 1、实训内容 利用所学Java程序设计语言实现一个图形化的计算器。 2、实训要求 1.程序运行正常无误,系统层次清晰合理; 2.实训内容里的要求必须要全面实现; 3.实训过程中要仔细操作,细心观察,勤于思考,注意记录; 4.实训报告要做到文字通畅、论点正确、论述有据; 5.要求学生在指导教师的指导下,独立完成实训的全部内容; 6.在规定时间内完成实训的全部任务,并按规定格式上交实训报告; 三、实训设备 硬件:个人电脑、 软件:、JDK1.6.0_23 四、实训过程 以上的图表示实训编写的程序没有错误,可以正常的运行

以上的图是运行程序时所显示出来的小小计算机的界面 为了实际的运行一下计算机的功能,此时输入1加2 此时计算机上显示的是数字1和数字2相加的结果,3. 为了实际的运行一下计算机的功能,此时输入数字1乘数字2 此时计算机上显示的是数字1和数字2相乘的结果,2. 因为上述的两个小算数成功的运算出正确的结果所以此时关闭小小简单计算机的界面此时出现的编程图面为: 计算机程序的源码: .*; import .*;,insert); addButton("=",command); addButton("+",command); add(panel,; } privatevoidaddButton(Stringlabel,ActionListenerlistener) { JButtonbutton=newJButton(label); (listener); (button);//按钮监听器类,用于显示 } privateclassInsertActionimplementsActionListener { publicvoidactionPerformed(ActionEventevent) { Stringinput=(); if(start) { (""); start=false;

java集合类总结

1.本讲内容:集合collection (数组和集合90%功能相似,但是最大的区别是,数组在初始化的时候必须确定大小,而集合不用,而且集合是一堆的类,使用起来非常方便。) 讲集合collection之前,我们先分清三个概念: 1colection 集合,可用来存储任何对象的一种数据结构(容器)。 2Collection 集合接口,指的是,是Set、List 和Queue 接口的超类接口 3Collections 集合工具类,指的是类。 SCJP考试要求了解的接口有:Collection , Set , SortedSet , List , Map , SortedMap , Queue , NavigableSet , NavigableMap, 还有一个Iterator 接口也是必须了解的。 SCJP考试要求了解的类有:HashMap , Hashtable ,TreeMap , LinkedHashMap , HashSet , LinkedHashSet ,TreeSet , ArrayList , Vector , LinkedList , PriorityQueuee , Collections , Arrays 下面给出一个集合之间的关系图: 上图中加粗线的ArrayList 和HashMap 是我们重点讲解的对象。下面这张图看起来层级结构更清晰些。 我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。 4List 关注事物的索引列表 5Set 关注事物的唯一性 6Queue 关注事物被处理时的顺序 7Map 关注事物的映射和键值的唯一性 一、Collection 接口 Collection接口是Set 、List 和Queue 接口的父接口,提供了多数集合常用的方法声明,包括add()、remove()、contains() 、size() 、iterator() 等。 add(E e) 将指定对象添加到集合中 remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase size() 返回集合中存放的对象的个数。返回值为int clear() 移除该集合中的所有对象,清空该集合。 iterator() 返回一个包含所有对象的iterator对象,用来循环遍历 toArray() 返回一个包含所有对象的数组,类型是Object toArray(T[] t) 返回一个包含所有对象的指定类型的数组 我们在这里只举一个把集合转成数组的例子,因为Collection本身是个接口所以,我们用它的实现类ArrayList做这个例子:例子1: package edu.xjfu;

java中常用关键字总结

Java中的关键字总结 final 关键字 1、用final修饰的类不能被继承,没有子类; 2、用final修饰的方法,方法不能被重写; 3、用final修饰变量,变量的值不能被修改,表示常量,(书写规范:全部字母都要大写;多个单词,可以使用下划线(_)分开;) 注意:如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错; 4、final用于成员变量表示该成员变量为常量,不能被修改,必须在变量定义时赋值。 5、final用于局部变量表示该局部变量为常量,不能被修改,可以在变量定义时赋值,也可以先定义变量后赋值。 什么时候用final关键字? 有的时候不想别人重写我的方法就使用final关键字修饰该方法; static关键字 1、static用于成员变量表示该变量只有一份,也就是说静态成员变量属于类而不属于某个具体的类实例对象,所有的类实例对象共享这个静态成员变量;静态函数是不需要对象的,直接可以使用类名来调用; 2、非静态函数可以调用静态函数;静态函数不能调用非静态函数(非静态函数都是通过对象调用的);静态函数不能使用非静态成员变量,但可以使用静态成员变量; 3、静态函数调用时不需要对象的,所以不能使用和对象有关的关键字;(this;super;) 4、构造函数不能使用static修饰(构造函数是创建对象,开辟空间,给所有成员变量赋默认值之后,有JVM调用进栈,用来给对象的成员变量赋初始值的) static用于类,这里指的是内部类,那么在别的地方就可以通过外部类名来引用这个静态的内部类。 5、static还可以用于类的代码块,叫做静态代码块,静态代码块在类加载的时候就执行完毕,而类只加载一次;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先

java布局(java布局)

java布局(java布局) java布局(java布局) GridBagLayout Free setting component location Before use, set the layout to setLayout (), and the parameter is empty, that is, setLayout (null). Create a layout for the component's (x, y) coordinates, as well as the width and height as parameters. SetBonds (new, Rectangle (int, x, int, y, int, W, int, H)): parameters are coordinates and width, height. The setSize (int, int) sets the size of the component The setLocation (int, int) sets the coordinates of the components Example: Rectangle, re=new, Rectangle (10,10,50,30); Button.setBounds (re); Sequential layout (FlowLayout) Constructor: FlowLayout (): establish the sequence layout manager by default that the components on each row will be centered; FlowLayout (int): Specifies alignment, no arguments, FlowLayout.CENTER, or 1: the components on each row will be centered; arguments FlowLayout.LEFT or 0: left justified; arguments FlowLayout.RIGHT or 2: right aligned.

java任意窗口布局

package login; import java.awt.Color; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Login extends JFrame{ /** * @param args * 登陆窗口 */ private JLabel userId_label; private JLabel userPass_label; private JTextField userId_field; private JTextField userPass_field; private JButton ok_button; private JButton cancle_button; private JPanel mainPanel; JFrame frame; int frame_width;//窗口的宽度 int frame_height;//窗口的高度 public Login(){ Toolkit toolKit = Toolkit.getDefaultToolkit(); Dimension dimension = toolKit.getScreenSize(); int width =dimension.width; //屏幕的宽度 int height =dimension.height;//屏幕的宽度 frame_width = width/3; frame_height = height/3; buildPanel(frame_width,frame_height);//新建面板 this.setTitle("酒店管理系统"); this.setSize(frame_width,frame_height); this.setLocation(frame_width, frame_height); this.setContentPane(mainPanel);

Java中集合类用法总结

帮助 | 留言交? | 登录 首页我的图书馆主题阅读精彩目录精品文苑Tags 会员浏览好书推荐 以文找文 如何对文章标记,添加批注? Java 中集合?用法总结(转载) wade0564 收录于2010-07-08 阅读数:查看 收藏数:7 公众公开 原文来源 tags : java 集合类 欢迎浏览 wade0564 个人图书馆中收藏的文章,想收藏这篇好文章吗,赶快 吧,1分钟拥有自己的个人图书馆! 我也要收藏 举报 Java 中集合?用法总结 收藏 Collection ├List │├LinkedList │├ArrayList (异步,线程不安全,空间用完时自动增长原容量一半)│└Vector (同 步,线程安全,空间用完时自动增长原容量一倍)│ └Stack └Set ├HashSet └TreeSet Map ├Hashtable ├HashMap ├WeakHashMap └TreeMap Map 接口: | + -- WeakHashMap: 以弱键 实现的基于哈希表的 Map 。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条 | 目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为 可终止的,被终 | 止,然后被回收。丢弃某个键时, 其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。此实现 | 不是同步的。 | + -- TreeMap:该映射根据其键的自然顺序进行 排序,或?根据创建映射时提供的 Comparator 进行 排序,具体取决于使用的 | 构造方法。此实现不是同步的。 | + -- HashMap:基于哈希表的 Map 接?的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了 | 非同步和允许 使用 null 之外,HashMap 类与 Hashtable ?致相同。)此类不保证映射的顺序,特别是它不保证该顺 | 序恒久不变。此实现不是同步的。 | +-- SortedMap: 进一步提供关于键的总体排序 的 Map 。该映射是根据其键的自然顺序进 行排序的,或?根据通常在创建有 序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet 、keySet 和 values 方法返回 )进行迭代时,此顺序就会反映 出来。要采用此排序方式,还需要提供一些其他操作(此接?是 SortedSet 的对应映 射)。 Collection 接口: | 热点推荐 中国经典汤品——广东汤常用多音字汇总 如果你失恋。。。这些话...影响世界的100个管理定律汽车发动机?作过程和原理分析温家宝总理答中外记?问女人味,有多少男人可以读懂?珍稀的白头叶猴(组图)三鹿门事件之——中国,...国家公务员职务与级别当代古筝四美 付娜《渔...生活?秘方 真的很实用...哲理?品:守护梦想聚会时可以玩的?游戏依赖型人格障碍的表现和治疗经典妙语,十分精彩江边施救[贴图]李一男2003年在港湾...电脑速度慢的解决方法 ...重装系统后必须做的10件?事

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、https://www.360docs.net/doc/c79255976.html,ng.Object类 1、clone()方法 创建并返回此对象的一个副本。要进行“克隆”的对象所属的类必须实现https://www.360docs.net/doc/c79255976.html,ng. Cloneable接口。 2、equals(Object obj)方法 ?功能:比较引用类型数据的等价性。 ?等价标准:引用类型比较引用,基本类型比较值。 ?存在特例:对、Date及封装类等类型来说,是比较类型及对象的内容而不考虑引用的是否为同一实例。 3、finalize()方法 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 4、hashCode()方法返回该对象的哈希码值。 5、notify()方法唤醒在此对象监视器上等待的单个线程。 6、notifyAll()方法唤醒在此对象监视器上等待的所有线程。 7、toString()方法 返回该对象的字符串表示。在进行String与其它类型数据的连接操作时,自动调用toString()方法。可以根据需要重写toString()方法。 8、wait()方法 在其他线程调用此对象的notify() 方法或notifyAll() 方法前,导致当前线程等待。 二、字符串相关类 l String类 charAt(int index) 返回指定索引处的char 值。 compareTo(String anotherString) 按字典顺序比较两个字符串。 compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 concat(String str) 将指定字符串连接到此字符串的结尾。 endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 将此字符串与指定的对象比较。 equalsIgnoreCase(String anotherString) 将此String 与另一个String 比较,不考虑大小写。indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。 lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 length() 返回此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar 替换此字符串中出现的所有oldChar 得到的。split(String regex) 根据给定正则表达式的匹配拆分此字符串。 startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex 处开

相关文档
最新文档