总结
一、Java提供的图形界面组件
1、AWT组件
2、SWING组件
3.JavaFX组件
二、常用的组件类
1、容器组件类
2、元素组件类
元素组件就是想按钮、标签、复选框等的一类实现某种具体功能的组件。我们经常使用的有以下几种:
JLabel 标签元素组件类 显示文字或者图片
JTextField 文本输入框元素组件类 接收输入信息,将输入信息显示出来
JPasswordField 密码输入框元素组件类 接收输入信息,将输入的信息以某个符号代替显 示
JCheckBox 复选框(多选框)元素组件类 首先又一个选择框,在选择框后还能显示文字或 者图片信息
JButton 按钮元素组件类 显示文字或图片,提供一个点击效果
3、辅助类
辅助类就是那些有助于我们优化界面或者帮助某个组件完成功能的类。典型的常用的类有如下几个:
javax.swing.ImageIcon 图标类。将磁盘上的图片文件加载到程序中。
java.awt.FlowLayout 流式布局类。流式布局类似word文档(所有的布局类都只能应用于容器组件上) 在java.awt和javax.swing包下所有以Layout结尾的类都是布局类
java.awt.Dimension 封装类。用来封装组件的宽度和高度
BorderLayout 边框布局。把容器分为上北下南左西右东中间五个部分,这五个部分的组成如下:
我们可以对边框布局的五个部分进行大小的设置。从上图中我们可以看到对于南北两个部分我们只能设置它的高度,它的宽度和窗体的宽度是一致的;对于东西两个部分我们可以设置它的宽度,它的高度有嫩被两个部分以及窗体的高度决定;对于中部,我们可以直接设置它的长宽。
三.登录界面的实现
package test; import java.awt.Color; import javax.swing.JFrame; public class Login { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Login l = new Login();//实例化一个Login对象。 l.initUI();//调用初始化窗体的方法。 } public void initUI(){ javax.swing.JFrame frame = new javax.swing.JFrame();//实例化一个窗体对象 frame.setTitle("登陆界面");//设置窗体的标题 frame.setSize(800,800);//设置窗体的大小 frame.setLocationRelativeTo(null);//设置窗体的位置为居中 frame.setResizable(false);//设置不可调节大小 frame.setDefaultCloseOperation(3);//设置窗体的关闭操作。这个方法有0 1 2 3四个返回值。其中0是指不关闭,也就是说无论点击多少次关闭按钮都不会有反应。1是指点击关闭按钮会关闭这个窗体但是程序依然在后台运行。2是指如果有多个窗体就关闭当前窗体,如果只有一个则关闭程序。3是指直接关闭程序。 frame.setBackground(Color.LIGHT_GRAY);//设置窗体的背景颜色 frame.setVisible(true);//设置窗体可见。如果不设置这一步那么窗体看不见。另外所有的组建都要加在这个方法之前,否则不可见。 } }
实例化元素组件对象并添加到窗体上
package test; import java.awt.Color; import java.awt.Font; import javax.swing.JFrame; public class Login { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Login l = new Login();//实例化一个Login对象。 l.initUI();//调用初始化窗体的方法。 } public void initUI(){ javax.swing.JFrame frame = new javax.swing.JFrame();//实例化一个窗体对象 frame.setTitle("登陆界面");//设置窗体的标题 frame.setSize(800,800);//设置窗体的大小 frame.setLocationRelativeTo(null);//设置窗体的位置为居中 frame.setResizable(false);//设置不可调节大小 frame.setDefaultCloseOperation(3);//设置窗体的关闭操作。这个方法有0 1 2 3四个返回值。其中0是指不关闭,也就是说无论点击多少次关闭按钮都不会有反应。1是指点击关闭按钮会关闭这个窗体但是程序依然在后台运行。2是指如果有多个窗体就关闭当前窗体,如果只有一个则关闭程序。3是指直接关闭程序。 frame.setBackground(Color.LIGHT_GRAY);//设置窗体的背景颜色 javax.swing.ImageIcon image = new javax.swing.ImageIcon("C:\Users\Apple\Pictures\Saved Pictures\冠军.jpg");//实例化一个图片对象,并引用图片路径 javax.swing.JLabel Limage = new javax.swing.JLabel(image);//实例化一个标签对象,并把上面的图片对象添加上去。 frame.add(Limage);//在窗体上添加标签 javax.swing.JLabel Lname = new javax.swing.JLabel("账号:");//实例化一个标签对象并调整字体、大小 Lname.setFont(new Font("楷体",Font.BOLD,20)); frame.add(Lname);//添加到面板,下同 javax.swing.JTextField Tname = new javax.swing.JTextField();//实例化一个文本输入框对象并调整大小 java.awt.Dimension dim = new java.awt.Dimension(300,30); Tname.setPreferredSize(dim); frame.add(Tname); javax.swing.JLabel Lcode = new javax.swing.JLabel("密码:");//实例化一个标签对象并调整字体、大小 Lcode.setFont(new Font("楷体",Font.BOLD,20)); frame.add(Lcode); javax.swing.JPasswordField Pcode = new javax.swing.JPasswordField();//实例化一个密码输入框对象并调整大小 java.awt.Dimension Pdim = new java.awt.Dimension(300,30); Pcode.setPreferredSize(Pdim); frame.add(Pcode); javax.swing.JCheckBox C1 =new javax.swing.JCheckBox("记住密码");//实例化一个复选框对象并调整字体、大小 C1.setFont(new Font("楷体",Font.BOLD,20)); frame.add(C1); javax.swing.JCheckBox C2 = new javax.swing.JCheckBox("自动登录");//实例化一个复选框对象并调整字体、大小 C2.setFont(new Font("楷体",Font.BOLD,20)); frame.add(C2); javax.swing.JButton Blogin = new javax.swing.JButton("登录");//实例化一个按钮对象并调整字体、大小 Blogin.setPreferredSize(new java.awt.Dimension(300,40)); Blogin.setFont(new Font("楷体",Font.BOLD,20)); frame.add(Blogin); frame.setVisible(true);//设置窗体可见。如果不设置这一步那么窗体看不见。另外所有的组建都要加在这个方法之前,否则不可见。 } }
你会看到好大一界面。
这是为什么?
JFrame窗体的默认布局是边框布局,也就是说我们前面要加的东西确实已经加上去了,但是被一层一层覆盖掉了。所以这个时候我们就需要设置一下窗体的布局。我们可以把窗体设置成流式布局(FlowLayout)
java.awt.FlowLayout 流式布局类。流式布局类似word文档(所有的布局类都只能应用于容器组件上)我们给上面加一段代码:
java.awt.FlowLayout fl = new java.awt.FlowLayout(); //实例化一个布局对象 frame.setLayout(fl);调用这个对象
四、优化上述登录界面
东西南北中”的边框布局和“JPanel”面板了