/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/
与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解。
1.Java提供的图形界面类有哪些?
Java提供了两套图形界面
(1)AWT组建(基础)
AWT组件是jdk1.0的时候推出的图形界面类,它是位于java.awt包下的类。
当时在开发AWT组件时,采用的语言是C和C++,并且还调用了操作系统底层的绘图函数来实现AWT组件(我们看到的图形界面实际上画出来的)。
基于语言和底层函数的调用,就导致AWT组件无法实现跨平台性。
(2)SWING组件(扩展)
SWING组件是jdk1.4的时候推出的图形界面类,它是位于javax.swing包下的类。
SWING组件是基于AWT组件的基础上,采用纯Java语言构建一个条新的轻量级跨平台组件。
AIR富客户端
JavaFX
2.常用的组件类和辅助类
(1)容器组件类:组件上能添加其他的组件,那该组件就是容器组件类。
JFrame 窗体容器组件类 顶级容器(顶级容器不要相互添加),如果要实现一个图形界面,首先必须要先有一个顶级容器
JPanel 面板容器组件类 最灵活的容器
(2)元素组件类:一般是用来显示文字、图片或者接收输入信息的就是元素组件类。
JLabel 标签元素组件类 显示文字或图片,也可以文字图片一起显示
JTextField 文本输入框元素组件类 接收用户输入的信息,然后将输入信息直接显示
JPasswordField 密码输入框元素组件类 接收用户输入的信息,然后将输入的每一个字符都用对应的一个符号代替显示
JButton 按钮元素组件类 显示文字或图片,也可以文字图片一起显示,可以点击
JComboBox 下拉列边框元素组件类 可以给组件添加多个选项,每次只能选中一个,默认不可以编辑。
JCheckBox 复选框元素组件类 提供一个选择框,在框后还可以显示文字或图片信息。
注意:上述的容器组件类和元素组件类都是属于SWING组件中的类,如果要使用这些类,要记得加上类的包名,例如:javax.swing.JFrame。
(3)辅助类:帮助组件完成某一个特定功能的类。
java.awt.FlowLayout 流式布局类,流式布局的效果类似于Word文档,但是不能像Word一样回车换行。
java.awt.BorderLayout 边框布局类,把容器分为五部分,上北下南左西右东中间,每一个部分只能添加一个组件。
在java.awt包和javax.swing包下所有以Layout结尾的类都是布局类。布局类只能应用在容器组件上。
java.awt.Dimension 封装组件宽度和高度的类
javax.swing.ImageIcon 加载图片到程序中的类
3.界面实现(搭积木的过程)
(1)定义Login类,在类中定义主函数和初始化界面的方法。
(2)在主函数中实例化Login类的对象,然后用对象名调用初始化界面的方法。
(3)在initUI方法中,实例化JFrame窗体容器组件类的对象。
(4)设置窗体容器组件的属性值:标题、大小、显示位置、关闭操作、禁止调整组件大小、布局、可见。
(5)实例化元素组件类的对象,添加到窗体上(组件的添加要在窗体可见之前完成)。
1 package xxj.login; 2 3 import java.awt.BorderLayout; 4 import java.awt.Dimension; 5 import java.awt.FlowLayout; 6 7 import javax.swing.ImageIcon; 8 import javax.swing.JButton; 9 import javax.swing.JComboBox; 10 import javax.swing.JFrame; 11 import javax.swing.JLabel; 12 import javax.swing.JPanel; 13 import javax.swing.JTextField; 14 15 /** 16 * 1.定义Login类, 17 */ 18 public class Login { 19 20 /** 21 * 1.在类中定义主函数和 22 */ 23 public static void main(String[] args) { 24 // 2.在主函数中实例化Login类的对象,然后用对象名调用初始化界面的方法。 25 Login login = new Login(); 26 login.initUI(); 27 } 28 29 /** 30 * 1.初始化界面的方法。 31 */ 32 public void initUI() { 33 // 3.在initUI方法中,实例化JFrame窗体容器组件类的对象。 34 JFrame frame = new JFrame(); 35 // 4.设置窗体容器组件的属性值:标题、大小、显示位置、关闭操作、禁止调整组件大小、布局、可见。 36 frame.setTitle("Login");// 设置窗体的标题属性值 37 frame.setSize(380, 320);// 设置窗体的大小属性值,单位是像素 38 frame.setLocationRelativeTo(null);// 设置窗体显示在屏幕的中央 39 frame.setDefaultCloseOperation(3);// 设置窗体的关闭操作,3表示关闭窗体退出程序。 40 frame.setResizable(false);// 设置禁止调整窗体的大小 41 42 /** 43 * // 实例化FlowLayout流式布局类的对象 FlowLayout fl = new 44 * FlowLayout(FlowLayout.CENTER, 5, 5); frame.setLayout(fl);// 45 * 设置窗体的布局方式为流式布局 46 */ 47 48 BorderLayout bl = new BorderLayout();// 实例化BorderLayout边框 布局类的对象 49 frame.setLayout(bl);// JFrame窗体容器组件默认的布局方式就是BorderLayout边框布局 50 51 // 5.实例化元素组件类的对象,添加到窗体上(组件的添加要在窗体可见之前完成)。 52 53 // 实例化ImageIcon图标类的对象,该对象加载磁盘上的图片到内存中,组件就可以显示ImageIcon的对象 54 ImageIcon icon = new ImageIcon("这里放图片地址"); 55 // 实例化JLabel标签元素组件类的对象,组件显示icon图标对象 56 JLabel labIcon = new JLabel(icon); 57 // 将labIcon添加到窗体的北边 58 frame.add(labIcon, BorderLayout.NORTH); 59 60 // 实例化JLabel标签元素组件类的对象,组件显示"账号:"文字 61 JLabel labName = new JLabel("账号:"); 62 // 将labName添加到窗体上 63 frame.add(labName, BorderLayout.WEST);// 在边框布局中,将组件添加到窗体的西边 64 65 // // 实例化JLabel标签元素组件类的对象,组件显示"密码:"文字 66 // JLabel labPassword = new JLabel("密码:"); 67 // // 将labPassword添加到窗体上 68 // frame.add(labPassword, BorderLayout.SOUTH);// 在边框布局中,将组件添加到窗体的南边 69 70 // // 实例化JButton标签元素组件类的对象,组件显示"东边:"文字 71 // JButton labeast = new JButton("东边:"); 72 // // 将labeast添加到窗体上 73 // frame.add(labeast, BorderLayout.EAST);// 在边框布局中,将组件添加到窗体的东边 74 75 //实例化JPanel面板容器组件类的对象 76 JPanel centerPane = new JPanel(); 77 centerPane.setLayout(new FlowLayout()); 78 79 80 JTextField textName = new JTextField(); 81 textName.setPreferredSize(new Dimension(180,30));//此方法不能用于JFrame。 82 centerPane.add(textName); 83 84 String [] array = {"257037851"}; 85 JComboBox cbItem = new JComboBox(array); 86 cbItem.setPreferredSize(new Dimension(180,30)); 87 centerPane.add(cbItem); 88 89 frame.add(centerPane); 90 91 frame.setVisible(true);// 设置窗体为可见,这个是必须写的,且必须在最后,否则会看不到一些组件 92 } 93 94 }
原文地址:https://www.cnblogs.com/csu-lmw/p/9251821.html