欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swing组件与监听器

程序员文章站 2022-06-06 23:37:59
...

 

互联网就像一片大海,它会淹死那些不会游泳的人,因此筛选信息的能力是非常重要的。

如果今天是我生命中最后一天,我还会去做今天要做的事情吗?我们需要时刻提醒自己的生命行将终结。这是帮助我们为生命中的重要选择做出决定的最好办法。

   高大可

记住,你即将死去!                                                                                                           — Steve jobs

一、图形用户界面的类主要在哪个包中?

java.awt          重量级组件     依赖与具体的操作系统

javax.swing       轻量级组件     真正实现了跨平台

 

二、AWT包主要包含的四部分是什么?

容器:              用于放置基本组件,其本身也是一种组件

基本组件:          包括按钮、标签、文本框等,是图形界面的基本组成元素

布局管理器:        对容器中放置的组件进行布局管理

事件处理:          使得用户能够通过图形界面与系统交互,又称加监听器

 

三、容器部分

JFrame  窗体类    默认的是边框布局(BorderLayout)

代码演示如下:

 

import java.awt.Color;

import javax.swing.JFrame;

 

publicclass Test {

       publicstaticvoid main(String[] args) {

 

              JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"

              f.setSize(200,200);//设置Frame的大小

              f.setResizable(false);//设置为大小不可调

              f.setBackground(Color.GRAY);//设置背景色

              f.setLocationRelativeTo(null);//设置窗口出现的默认位置

              f.setVisible(true);//设置Frame为可见

       }

}

 

效果如下


Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
 

 

JPanel   面板类    默认的是流式布局(FlowLayout)

代码演示如下:

 

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Panel;

import javax.swing.JFrame;

 

publicclass Test {

       publicstaticvoid main(String[] args) {

 

              JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"

              f.setSize(200,200);//设置Frame的大小

              f.setResizable(false);//设置为大小不可调

              f.setBackground(Color.GRAY);//设置背景色

              f.setLocationRelativeTo(null);//设置窗口出现的默认位置

              

              //添加几个面板,并设置背景色

              Panel p1 = new Panel();//设置第一个Panel

              p1.setBackground(Color.red);//设置第一个Panel的背景色

              Panel p2 = new Panel();//设置第二个Panel

              p2.setBackground(Color.yellow);//设置第二个Panel的背景色

              Panel p3 = new Panel();//设置第三个Panel

              p3.setBackground(Color.blue);//设置第三个Panel的背景色         

              //将Panel添加到Frame中

              f.add(p1, BorderLayout.NORTH);//将第一个Panle加入Frame中

              f.add(p2, BorderLayout.CENTER);//将第二个Panle加入Frame中

              f.add(p3, BorderLayout.SOUTH);//将第三个Panle加入Frame中

              

              f.setVisible(true);//设置Frame为可见

       }

}

 

输出的结果是:


Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
 

每一个容器都可以设置布局,但是一个容器只能设置一个布局。

 

四、布局管理器

FlowLayout       流式布局类

流式布局是Panel类的默认布局,用于将组件按照从左到右、从上到下的顺序进行布局。组件间默认的间距是5个像素点,默认的对齐方式是居中。

BorderLayout     边框布局类

边框布局是JFrame类的默认布局,此布局管理器将容器划分为东(East)、西(West)、南(South)、北(North)、中(Center)五个区域。

GridLayout       网格布局类          

网格布局管理器将容器划分为由行和列组成的多个网格,每个网格放一个组件。采用网格布局,在容器中按照从左到右、从上到下的顺序往网格中逐个添加组件。

 

这些布局是java.awt包下的类

 

五、独立组件

JLabel    标签类

JTextField    文本输入框类

JButton       按钮类

JPasswordField    密码输入框类

JComboBox       下拉列表框

JCheckBox        复选框

JList    列表选项

代码演示如下:

 

import java.awt.Checkbox;

import java.awt.CheckboxGroup;

import java.awt.Color;

import java.awt.GridLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

 

publicclass Test {

       publicstaticvoid main(String[] args) {

 

              JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"

              f.setSize(200,100);//设置Frame的大小

              f.setResizable(false);//设置为大小不可调

              f.setBackground(Color.GRAY);//设置背景色

              f.setLocationRelativeTo(null);//设置窗口出现的默认位置

       

              f.setLayout(new GridLayout(1,3));//设置窗体布局为网格布局

              

              JLabel lb = new JLabel("性别:");//添加性别标签

              lb.setAlignmentY(JLabel.RIGHT_ALIGNMENT);

              

              //设置分组以实现单选功能

              CheckboxGroup cbg = new CheckboxGroup();

              

              //创建JCheckbox组件

              Checkbox cb1 = new Checkbox("男",true,cbg);

              Checkbox cb2 = new Checkbox("女",false,cbg);

              

              //在Frame中加组件

              f.add(lb);

              f.add(cb1);

              f.add(cb2);

              

              f.setVisible(true);//设置窗体可见

       }

}

 

运行结果是:


Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
 

这些这些组件都继承自Component类。

 

六、事件监听机制

一个简单的事件处理流程表述为:在一个按钮对象上点击鼠标时,系统即发出事件通知,这个事件会被做为一个EventObject(事件对象)通知给对这个事件有兴趣的处理对象EventListener(事件监听器),监听器再对该事件进行处理的命令。

一个事件处理流程由三部分组成:

事件源:即焦点所在的组件,如窗口、按钮、复选框等

事件:用户对事件源的各种操作动作

事件处理器:用于接受并处理事件的方法

代码演示如下:

 

import java.awt.FlowLayout;

import javax.swing.JFrame;

 

publicclass QQdenglu {

 publicstaticvoid main(String[] args){

        //创建窗体对象

        JFrame Jf=new JFrame();

        //设置窗口标题

        Jf.setTitle("QQ登陆");

        //设置窗口大小

        Jf.setSize(300,300);

       //设置点击关闭按钮的时候退出程序

        Jf.setDefaultCloseOperation(3);

       //创建一个管理器布局规则

        FlowLayout fl=new FlowLayout();

        //将管理器规则加给窗体对象

        Jf.setLayout(fl);

       

     //添加组件

        //文本标签,帐号

        javax.swing.JLabel Jl=new javax.swing.JLabel("帐号");

        //加到窗体中

        Jf.add(Jl);

        //输入框

        javax.swing.JTextField field = new javax.swing.JTextField(20);

        Jf.add(field);

        //文本标签,密码

        javax.swing.JLabel J2=new javax.swing.JLabel("密码");

        //加到窗体中

        Jf.add(J2);

        //输入密码栏

        javax.swing.JTextField field1 =new javax.swing.JTextField(20);

        //加到窗体中

        Jf.add(field1);

        //登陆按钮

     javax.swing.JButton JBu=new javax.swing.JButton("登陆");

        //加到窗体中

     Jf.add(JBu);

     //设置一个保存密码的复选框

     javax.swing.JCheckBox box = new javax.swing.JCheckBox("保存密码");

     //加到窗体中

     Jf.add(box);

     //设置可见的

     Jf.setVisible(true);

     

     //给按钮加一个监听器

     LoginListener lis= new LoginListener();

     JBu.addActionListener(lis);

     

  }   

}

 

以上是类QQdenglu的代码部分,下面是它的监听器类LoginListener的代码部分

 

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JLabel;

 

publicclass LoginListener implements ActionListener{

        publicvoid actionPerformed(ActionEvent e){

               JFrame jfr=new JFrame("跳转界面");

               jfr.setSize(300,300);

               JLabel label = new JLabel("你跳转了");

               jfr.add(label);

               jfr.setVisible(true);

        }

}

 

程序预期结果是当点击登录按钮时,监听得到事件信息,弹出另外一个对话框


Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
 

当我点击登录后出现的结果是


Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
 

结果跟预期是一样的

 

这部分就总结这些,下次总结数组与集合框架的部分

106日写于蓝杰公司

  • Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
  • 大小: 9.2 KB
  • Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
  • 大小: 12.5 KB
  • Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
  • 大小: 10.8 KB
  • Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
  • 大小: 18.8 KB
  • Swing组件与监听器
            
    
    博客分类: Java学习笔记 swing监听器事件处理 
  • 大小: 13.4 KB

上一篇: VUE基础

下一篇: vue基础