日常生活中窗体随处可见,各种聊天、直播、游戏、音影。都是各种窗体组成的软件。

  一般而言一个窗体界面就是一个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;

  

posted on 2019-01-02 16:36  张裕泉  阅读(497)  评论(0编辑  收藏  举报