我们要在Java中实现一个界面,首先就要解决一个问题:一个界面都有什么?比如我们的QQ登录界面:
很明显我们可以看到:输入框、按钮 、文字、图片 、标题栏、窗体、复选框。
我们把它们按照功能分类可以分为:容器、组件和元素。
容器:可以加载其他组件/控件,上述窗体为顶级容器。
组件:输入框、按钮、滑杆、菜单、选项卡、选择器、文字和图片等。
元素:尺寸 、颜色、字体、布局。
清楚了上述概念,我们才可以规划我们建立一个界面的步骤:
1. 建立容器对象
2. 设置容器对象的属性值 、设置布局
3. 添加组件(创建对象、设置属性、添加到对应容器上)
4. 可视化
我们在这里要用到的两个包分别是java.awt和java.swing,前者是早期界面开发包,后者是升级后的可视化包。
下面附上代码:
1 import javax.swing.*; 2 import java.awt.*; 3 4 public class LoginUI extends JFrame{ 5 public static void main(String[] args) { 6 LoginUI U = new LoginUI(); 7 U.initUI(); 8 } 9 public void initUI() 10 { 11 //建立窗体 12 this.setSize(400, 550); //窗体大小 13 this.setTitle("登录界面"); //标题 14 this.setDefaultCloseOperation(EXIT_ON_CLOSE); //退出界面即关闭程序 15 this.setLocationRelativeTo(null); //窗体生成位置变为中央 16 17 //流式布局 18 FlowLayout fl = new FlowLayout(); 19 this.setLayout(fl); 20 21 //组件 22 ImageIcon img = new ImageIcon("C:\\Users\\admin\\Desktop\\头像.jpeg"); //图片 23 JButton bu = new JButton("Login"); //按钮 24 JTextField nameJTF = new JTextField(); //文字输入框 25 JPasswordField passwordJTF = new JPasswordField(); //密码输入框 26 JCheckBox jcb = new JCheckBox("确认已阅读《用户隐私条款》"); //复选框 27 28 JLabel Img = new JLabel(img); //图片标签(载体) 29 JLabel name = new JLabel("账号:"); //文字标签 30 JLabel password = new JLabel("密码:"); //文字标签 31 32 Dimension D = new Dimension(300,20); //输入框大小 33 nameJTF.setPreferredSize(D); 34 passwordJTF.setPreferredSize(D); 35 36 //添加组件 37 this.add(Img); 38 39 this.add(name); 40 this.add(nameJTF); 41 42 this.add(password); 43 this.add(passwordJTF); 44 45 this.add(bu); 46 this.add(jcb); 47 48 //可视化 49 this.setVisible(true); 50 51 //复选框接口 52 CheckBoxListener LoginC = new CheckBoxListener(); 53 jcb.addChangeListener(LoginC); 54 55 // 56 CBActionListener LoginCBA = new CBActionListener(); 57 jcb.addActionListener(LoginCBA); 58 59 //接口 60 LoginListener Loginl = new LoginListener(); 61 bu.addActionListener(Loginl); 62 Loginl.namein = nameJTF; 63 Loginl.passwordin = passwordJTF; 64 65 } 66 }
我们先不去管复选框接口以后的代码,这些都是为了实现事件监听功能用的,我们在这里只需要生成一个界面。首先建立窗体我们必须要用到的一个类是JFrame,在这里我选择了用继承的方式写这段代码,当然还有另外一种写法就是不继承JFrame:
直接用Jframe创建对象:
1 JFrame jf = new JFrame(); 2 jf.setTitle("登录"); 3 jf.setSize(500,700);// 宽 高 单位 像素 4 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭时退出进程 5 jf.setLocationRelativeTo(null);// 居中显示
可以看到我们生成组件的时候有图片(IamgeIcon)、按钮(JButton)、输入框(JTextField、JPasswordField)、复选框(JCheckBox)。我们在创建相应的对象时,可以在构造函数里放入字符串,比如按钮,最后按钮上的文字就是是输入的字符串。
图片IamgeIcon后面则是你想要的生成的图片的绝对路径。除此之外,要把文字和图片添加到界面上必须要用标签(JLabel)。为这些组件设置属性,我们会用到的是Dimension,我们上面只设置了输入框的大小。
创建完组件,因为我们用的是流式布局。它的特点是:将组件按从左到右从上到下依次排列,放不下则自动换行。所以我们要提前设计好将组件添加到窗体上面的顺序。
最后一步:可视化(没有这步最后什么都看不到)。
看看最后的效果: