日常生活中窗体随处可见,各种聊天、直播、游戏、音影。都是各种窗体组成的软件。
一般而言一个窗体界面就是一个JFrame对象。
JFrame的位置在我们的一个javax.swing.JFrame。
先创建一个界面并设置可见
//创建一个界面类 public class Interface {//显示界面的方法 public void intUI(){ //创建一个顶级容器 javax.swing.JFrame frame=new javax.swing.JFrame("登陆界面"); //设置容器大小 frame.setSize(400, 300); //设置窗口关闭时退出 frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); //设置窗口居中 frame.setLocationRelativeTo(null); //设置窗口不可改变大小 frame.setResizable(false); //设置窗口可见 frame.setVisible(true); } //创建主方法 public static void main (String[] srgs){ //创建界面类对象 Interface in=new Interface(); //调用显示界面的方法 in.intUI(); } }
然后运行一下。
就可以看见一个空白的窗口,看上面的代码javax.swing.JFrame,有很多。如果添加别的组件上去,就会浪费很多的写代码时间,时候我们可以在创建类的上面,利用关键字:import。
import javax.swing.JFrame;
后面的代码中直接写JFrame就可以了。
如果要创建一个登陆界面,那么上面的窗体是不够的,需要往上面添加东西,例如账号密码输入框等等。那添加的这些东西,称之为组件。
1、账号输入框 javax.swing.JTextField;
2、密码输入框 javax.swing.JPasswordField;
3、登录按钮 javax.swing.JButton;
4、尺寸 java.awt.Dimension;
然后把组件创建出来,并添加到窗口
import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPasswordField; import javax.swing.JTextField; public class Interface {//显示界面的方法 public void intUI(){ //创建一个顶级容器 JFrame frame=new JFrame("登陆界面"); //设置容器大小 frame.setSize(400, 300); //设置窗口关闭时退出 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口居中 frame.setLocationRelativeTo(null); //设置窗口不可改变大小 frame.setResizable(false); //创建输入框对象 JTextField jtext=new JTextField(); //设置输入框的大小 Dimension jtSize=new Dimension(200,20); jtext.setPreferredSize(jtSize); //创建一个密码输入框 JPasswordField password =new JPasswordField(); //设置输入框的大小 Dimension passwordSize=new Dimension(200,20); password.setPreferredSize(passwordSize); //创建一个按钮 JButton button=new JButton("登录"); //设置按钮大小 Dimension buttonSize=new Dimension(190,40); button.setPreferredSize(buttonSize); //添加组件到窗体上 frame.add(jtext); frame.add(password); frame.add(button); //设置窗口可见 frame.setVisible(true); } //创建主方法 public static void main (String[] srgs){ //创建界面类对象 Interface in=new Interface(); //调用显示界面的方法 in.intUI(); } }
运行一下:
发现,整个按钮占满了窗体,这是因为缺少一个布局方式。一般我们常用的有流式布局。
流式布局 java.awt.FlowLayout
那么我们设置布局方式并添加到组件上
//设置窗体布局方式 FlowLayout flowLayout=new FlowLayout(); //添加布局方式到窗体上 frame.setLayout(flowLayout);
再运行一下:
若是没有布局,则所以添加到窗体上的东西默认占满整个窗体。流式布局按照添加顺序从左上开始排序,满一行则自动换行。
还有一下我们常用的组件。
图片 javax.swing.ImageIcon
文字 java.lang.String
复选框 javax.swing.JCheckBox
显示文字的标签 javax.swing.JLabel
都可以添加到窗体上。
如果输入完账号密码,想要点击登录。就需要用到一个事件监听机制。
给事件源组件添加监听器,当事件源组件上发生相应类型的时间时,则自动调用。想要点击登录,事件源对象就是登录按钮,发生了鼠标点击的事件。
鼠标动作监听器:java.awt.event.ActionListener。
创建一个监听器对象:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Monitor implements ActionListener{ //当鼠标被点击时执行 public void actionPerformed(ActionEvent e){ //输出 按钮被点击了 System.out.println("按钮被点击了"); } }
然后在窗体界面类中实例化监听器,并把鼠标动作监听器添加到按钮上。
import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPasswordField; import javax.swing.JTextField; public class Interface { //显示界面的方法 public void intUI(){ //创建一个顶级容器 JFrame frame=new JFrame("登陆界面"); //设置容器大小 frame.setSize(400, 300); //设置窗口关闭时退出 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口居中 frame.setLocationRelativeTo(null); //设置窗口不可改变大小 frame.setResizable(false); //设置窗体布局方式 FlowLayout flowLayout=new FlowLayout(); //添加布局方式到窗体上 frame.setLayout(flowLayout); //创建输入框对象 JTextField jtext=new JTextField(); //设置输入框的大小 Dimension jtSize=new Dimension(200,20); jtext.setPreferredSize(jtSize); //创建一个密码输入框 JPasswordField password =new JPasswordField(); //设置输入框的大小 Dimension passwordSize=new Dimension(200,20); password.setPreferredSize(passwordSize); //创建一个按钮 JButton button=new JButton("登录"); //设置按钮大小 Dimension buttonSize=new Dimension(190,40); button.setPreferredSize(buttonSize); //添加组件到窗体上 frame.add(jtext); frame.add(password); frame.add(button); //监听器对象实例化 Monitor mon=new Monitor(); //给按钮添加监听器 button.addActionListener(mon); //设置窗口可见 frame.setVisible(true); } //创建主方法 public static void main (String[] srgs){ //创建界面类对象 Interface in=new Interface(); //调用显示界面的方法 in.intUI(); } }
运行一下,当我们点击按钮时,则调用监听器的事件处理方法。
按钮被点击了
常用的监听器:
鼠标事件监听器:java.awt.event.MouseListener;
键盘事件监听器:java.awt.event.KeyListener;