第五次课时总结
这节课的内容是登陆界面的开发,java中的图形界面有两种awt和swing。下面先来介绍一下界面开发过程中的经常用到的一些组件。
(1)容器类组件:
JFrame:窗体类。
JPanel: 面板类
JMenuBar:菜单栏
JMenu: 菜单项
(2)元素组件:
JLabel:标签类
JButton:按钮类
JTextField:文本框
JPasswordField:密码输入框
JComboBox:下拉文本框
JCheckBox:复选框
JMenuItem:菜单
下面在介绍一下常用的布局方式:
BorderLayout:边框布局
FlowLayout:流式布局
GirdLayout:表格布局
边框布局:界面被分为东、西、南、北、中五个部分,其中北和南两个部分宽度是不可变的仅高度可以改变,东和西仅宽度可以改变高度不可以改变。当然如果一个界面采用边框布局的方式,五个部分可以不都出现,其他未出现的部分会被中间部分自动充满。
流式布局:组件从左到右依次排列,知道写满一行,写满后自动跳转到下一行。
当然开发一个界面的时候可以用到多个布局方式,但要注意的是一个容器只可以存在一种布局方式。在java中,JFrame默认的是边框布局的方式,JPanel默认的是流式布局。
开发一个界面的一般步骤:
1.定义类,在类中定义主函数和初始化界面的方法.
2.在初始化界面的方法中,实例化一个JFrame窗体类的对象.
3.设置窗体对象的属性值
4.实例化布局对象并且设置窗体容器的布局方式.
5.实例化对象容器或者元素组件的对象,让后将对象添加到窗体上.
6.在主函数中实例化类的对象,然后调用初始化界面的方法
下面介绍一下我在练习中遇到的问题以及解决办法:
在做QQ登陆界面的时候,我先采用的布局方式是流式布局,但我发现随着窗体大小的改变组件在界面上的位置会发生明显的变化,这不是我想要的结果,最后我才用了一种不同于以上三种布局方式的布局方式——绝对布局。首先调用setLayout(null);方法设置布局方式为绝对布局,然后调用setBounds();方法来设置组件的起始位置、高度和宽度。例如如下代码:
//设置窗体的布局方式 绝对布局方式 jf.setLayout(null); //创建一个标签元素 ImageIcon image = new ImageIcon("u=2998989523,1930523640&fm=0&gp=0.jpg"); JLabel jl = new JLabel(image); jl.setBounds(new Rectangle(20,90,80,80));
在做计算机界面时发现一开始的输入框高度太矮,但在调用setSize();方法修改其大小时并没有起到作用。这是因为系统在重绘时又将其初始化为原来的初始值。解决方法是调用setPreferredSize();方法。例如如下代码:
//创建布局方式 java.awt.BorderLayout b1 = new java.awt.BorderLayout(5,5); //创建一个文本框 javax.swing.JTextField j = new javax.swing.JTextField(); //将这个组件放到北面 jf.add(j,BorderLayout.NORTH); //设置文本框的高度 j.setPreferredSize(new Dimension(0, 50));
其他相关方法详见API文档,习题源代码如下:
QQ界面
package three0709;
package three0709; import java.awt.*; import javax.swing.*; public class Login { public static void main(String[] args) { //实例化一个Login类的对象 Login l1 = new Login(); //调用界面初始化方法 l1.init(); } public void init(){ //实例化一个JFrame类的对象 javax.swing.JFrame jf = new javax.swing.JFrame(); //设置对象的属性值 jf.setSize(380,290);//设置对象的大小 jf.setTitle("QQ");//设置对象的标题 jf.setLocation(100,100);//设置对象的起始位置 jf.setDefaultCloseOperation(3);//设置窗体关闭时退出程序 jf.setResizable(false);//设置禁止改变窗体大小 //实例化一个流式布局的对象 //设置窗体的布局方式 绝对布局方式 jf.setLayout(null); //创建一个标签元素 ImageIcon image = new ImageIcon("u=2998989523,1930523640&fm=0&gp=0.jpg"); JLabel jl = new JLabel(image); jl.setBounds(new Rectangle(20,90,80,80)); ImageIcon image2 = new ImageIcon("201011221051319214.jpg"); JLabel j2 = new JLabel(image2); j2.setBounds(0, 0,image2.getIconWidth(), image2.getIconHeight()); jf.getLayeredPane().add(j2, new Integer(Integer.MIN_VALUE)); JPanel contentPane = (JPanel)jf.getContentPane(); contentPane.setOpaque(false); //创建一个下拉文本框 javax.swing.JComboBox c_name = new javax.swing.JComboBox(); c_name.setEditable(true); c_name.setBounds(new Rectangle(120, 90, 150, 20)); //创建一个标签元素 注册 javax.swing.JLabel x_name = new javax.swing.JLabel("注册账号"); x_name.setBounds(new Rectangle(280, 90, 90, 20)); //创建一个密码文本框 javax.swing.JPasswordField p_name = new javax.swing.JPasswordField(10); p_name.setBounds(new Rectangle(120, 120, 150, 20)); //创建一个标签元素 找回密码 javax.swing.JLabel s_name = new javax.swing.JLabel("找回密码"); s_name.setBounds(new Rectangle(280, 120, 90, 20)); //创建一个复选框 javax.swing.JCheckBox F1 = new javax.swing.JCheckBox("记住密码",true); F1.setBounds(new Rectangle(120, 150, 80, 20)); F1.setOpaque(false); javax.swing.JCheckBox F2 = new javax.swing.JCheckBox("自动登录"); F2.setBounds(new Rectangle(220, 150, 120, 20)); F2.setOpaque(false); //创建一个按钮 JButton jbt = new JButton("登 陆"); jbt.setBounds(new Rectangle(120,200,150,30)); c_name.addItem(1796864392 ); c_name.addItem(654865620 ); c_name.addItem(654765620 ); //将组建加到窗体上 jf.add(jl); jf.add(c_name); jf.add(x_name); jf.add(p_name); jf.add(s_name); jf.add(F1); jf.add(F2); jf.add(jbt); //设置窗体可见 jf.setVisible(true); } }
计算机界面
package four0709; import java.awt.*; public class Cale { /** * @param args *///程序的入口 public static void main(String[] args) { // TODO 自动生成的方法存根 //实例化一个Cale类的对象 Cale c1 = new Cale(); //调用初始化界面的方法 c1.init(); } //定义一个初始化方法 public void init(){ //实例化一个JFrame类的对象 javax.swing.JFrame jf = new javax.swing.JFrame(); //设置对象的属性值 jf.setSize(200,200);//设置对象的大小 jf.setTitle("计算机");//设置对象的标题 jf.setLocation(100,100);//设置对象的起始位置 jf.setDefaultCloseOperation(3);//设置关闭窗体是退出程序 jf.setResizable(false);//设置禁止改变窗体大小 //创建布局方式 java.awt.BorderLayout b1 = new java.awt.BorderLayout(5,5); //创建一个文本框 javax.swing.JTextField j = new javax.swing.JTextField(); //将这个组件放到北面 jf.add(j,BorderLayout.NORTH); //设置文本框的高度 j.setPreferredSize(new Dimension(0, 50)); //设置一个面板 javax.swing.JPanel pc = new javax.swing.JPanel(); //设置面板的布局方式4行4列的表哥布局方式 pc.setLayout(new GridLayout(4,4,5,5)); //设置按钮组件 javax.swing.JButton [] jbts = new javax.swing.JButton[16]; String [] labels = new String[]{"7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"}; for(int i = 0;i<jbts.length;i++){ javax.swing.JButton jbt = new javax.swing.JButton(labels[i]); pc.add(jbt); jf.add(pc,BorderLayout.CENTER); //设置窗体可见 jf.setVisible(true); } } }
相关推荐
高中历史第一单元第一次世界大战课时5单元学习总结学案新人教版选修3.pdf
高中历史第五单元烽火连绵的局部战争课时8单元学习总结学案新人教版选修3.pdf
2021年秋最新教科版五年级科学上册第二单元地球表面的变化第7课 总结我们的认识.pptx
第五课时、Matplottlib与数据可视化 这节课是数据可视化,发现python可以实现和Excel⼀样的数据图表。 第六课时是⽂本分析 主要是字符串的操作; python 正则表达式; 中⽂⾃然语⾔处理。 第七课时、是机器学习库和...
本文档中的内容摘自电子工业出版社的《计算机网络第5版》的ppt, 是我在复习这门课时进行的总结,我把自己认为是重点的内容摘录了出来并进行了整理,里面关于网格的一些基础知识基本上都涉及了。本文档适合想网络入门或...
课时5:Spark2sql从mysql中导入 课时6:Spark1.6.2sql与mysql数据交互 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户的收藏以及订单转换率 课时10:最终获取用户的...
课时5:Spark2sql从mysql中导入 课时6:Spark1.6.2sql与mysql数据交互 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户的收藏以及订单转换率 课时10:最终获取用户的...
课时5:Spark2sql从mysql中导入 课时6:Spark1.6.2sql与mysql数据交互 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户的收藏以及订单转换率 课时10:最终获取用户的...
课时5:Spark2sql从mysql中导入 课时6:Spark1.6.2sql与mysql数据交互 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户的收藏以及订单转换率 课时10:最终获取用户的...
2018_2019学年八年级数学上册第十五章分式15.2分式的运算15.2.1分式的乘除第1课时知能演练提升新版新人教版
课题名称 第1章 数据库入门 计划学时 4课时 内容分析 数据库技术是计算机应用领域中非常重要的技术,它产生于20世纪60年代末,是数据管理的最新技术,也是软件技术的一个重要分支。本章将重点讲解数据库的基础知识...
忻州师范学院计算机科学与技术系 实 验 报 告 学号: 姓名: 班级: 1302班 "课程名称 "无线网络技术 "实验课时 " 2 " "实验项目 "Zigbee实验 "实验时间 "2015.12.14 " "指导老师 " "实验成绩 " " "实验目的( "了解...
全血标本练习 (2~3hr) 第五课时 7,免疫荧光(三标记),示范及练习(1~2hr) 8,质控品及质控介绍: FlowCheck,FlowSet,CytoTrol,ImmunoTrol 9,总结及试剂介绍 第六-七课时 10,DNA 检测及分析: 检测原理,方案...
"课题 "Python实战-GUI编程(1) " "课时 "2课时(90 min) " "教学目标 "知识技能目标...复习总结(5 " " "min) 作业布置(2 min) " "教学过程 "主要教学内容及步骤 "设计意图 " "第一节课 " " "【教师】清点上课人数
部编五年级语文下册教学反思之习作:中国的世界文化遗产教学反思.docx
第1周第1次 共1次 最新-计算机应用基础五笔打字教程教案全文共39页,当前为第2页。 课时内容 初识五笔字型输入法 授课时间 90分钟 课时 2 教学目标 了解五笔字型输入法。 了解五笔打字场所。 熟悉王码五笔字型输入法...
教学课时:2课时 教学过程: 一、引入。 1946年,世界上第一台电子计算机诞生。 计算机网络是计算机技术和通信技术两大技术结合的产物。 二、发展过程。 计算机网络的发展经历了三个阶段:面向终端的计算机网络、...
年 月 周 汽车运用与维修(1)班,中餐烹饪与营养膳食(5)班 第 节课时教案 计算机应用基础(第二版)教学设计 第一章 计算机基础知识 1.1 了解计算机 一、教材分析 本教材是中等职业教育课程改革国家规划新教材第...
无故缺 席一次扣5分,迟到一次扣2分,缺席累计达到3次平时成绩清 零;课堂回答问题完成情况好的一次加2分;学生座位靠前安 排,不得玩手机,睡觉等。 学习评价 与反馈 锦城在线发布问卷调查表,了解学情;课堂提问...
3、计算机网络的分类 五、教学难点 1、计算机网络定义的理解 2、对计算机网络的分类 六、教学方法 1、 交流、讨论 实地考察 归纳概括 七、课时安排 1课时 八、教学过程 "学习环节"学习活动过程 "设计意图 " "(一)...