Java-swing 学习

需要先学习面对对象中的一些东西,构造函数,继承,接口什么的------

java类库包含一组Swing的包,让你能够提供GUI(图形用户界面),并接受来自键盘,鼠标和其他输入设备的用户输入
Swing包含以下GUI组件的应用程序:
1.框架:可以包含标题栏,菜单栏以及最大化,最小化和关闭按钮的窗口
2.容器:可包含其他组件的界面元素
3.按钮:可单击的区域,包含指出其用途的文本或图形
4.标签:提供信息的文本或图形
5.文本框或文本区域:接收键盘输入以及让用户能够编辑文本的窗口
6.下拉式列表:可从下拉式菜单或滚动窗口中选择的一组相关项
7.复选框和单选按钮:小框或圆圈,可被选中或取消选中
8.图标:可加入到按钮,标签,和其他组件中的图形
9.可滚动的窗格:用于放置用户界面容纳不下的组件,包含滚动条,可用于查看全部组件

swing组件位于javax.swing包中,这个包是java类库的标准组成部分。要通过Swing类的名称(即无须指定包名)引用它们,必须使用import语句导入该类或采用
import javax.swing.*;
用于支持GUI的其他两个包是:java.awt,java.awt.event处理用户输入的事件处理类
1. 使用Swing组件时,实际操纵的是该组件类的对象,你可以通过构造函数来创建组件,然后调用相应的方法来正确设置组件
2. 所有Swing组件都是抽象类JComponent 的子类,后者包含用于设置组件大小,修改背景颜色,定义文本字体以及工具提示。
3. 组件必须添加到容器(container)中,才能显示在用户界面上。容器是可以放置其他组件的组件。Swing容器是java.awt.Container的子类,包含用于在容器中添加或删除组件,使用布局管理器来排列组件以及设置容器边框的方法。容器通常可放置到其他容器内。

一:创建界面
要创建Swing应用程序,首先要创建一个表示主GUI的类。这个类的对象将用作容器,用于放置要显示的其他所有组件。
在很多项目中,主界面的对象都是框架JFrame类。【包含标题栏,菜单栏以及最大化,最小化和关闭按钮的窗口】

public class Main extends JFrame{
//body of class
public Main(){//这个类的构造函数

  }
}
这个类的构造函数需要完成:
1.调用超类的构造函数,给框架指定标题及其他  setTitle();指定标题
2.设置框架大小,指定宽度和高度(单位:像素)setSize(int,int)Dimension(int,int),或pack():将框架要包含的组件加入其中再调用pack().如果框架过大,pack()将其缩小到刚好能显示其中的组件;pack()将其扩大到刚好能显示其中的组件
3.决定用户关闭窗口怎么办  
eg.setDeaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSE:框架关闭时退出程序
 DO_NOTHING_ON_CLOSE 让框架打开并继续运行程序
  HIDE_ON_CLOSE  关闭框架并继续运行程序
  DISPOSE_ON_CLOSE 框架关闭时释放Java虚拟机(JVM)内存中的框架对象,并继续运行应用程序
  
4.显示框架setVisible(true);

二:创建组件
要使用界面组件,可以创建该组件类的一个对象,刚刚创建过的容器类JFrame

组件JButton:可单击的按钮
按钮类的构造函数有三项:
1.JButton(String):创建一个带指定文本的按钮
2.JButton(Icon):创建一个包含指定文本和图标的按钮
3.JButton(String,Icon):创建一个包含指定文本和图标的按钮

eg.创建一个带指定文本为Play的按钮
JButton play=new JButton("Play");

三:将组件加入到容器内

最简单的容器是面板JPanel
JButton quit=new JButton("QUit");
JPanel panel=new JPanel();
panel.add(quit);
以上三行代码:创建一个按钮并把它加到面板中





package com.company;
import javax.swing.*;
public class Main extends JFrame{
    JButton load=new JButton("Load");
    JButton save=new JButton("Save");
    JButton unsubscribe=new JButton("Unsubscribe");
    public  Main(){
        super("Button Frame");//框架的标题
        setSize(340,170);//框架的宽340,高170像素
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//框架关闭时退出程序
        JPanel panel=new JPanel();//创建一个JPanel对象
        panel.add(load);//,调用add()方法,将load按钮加入panel中
        panel.add(save);
        panel.add(unsubscribe);
        add(panel);//将panel加入框架JFrame中
        setVisible(true);//使JFrame可见
    }

    public static void main(String[] args) {
        Main bf=new Main();
        
    }
}

在这里插入图片描述
四.使用组件
注意:将组件加入面板和其他容器之前,务必设置好组件的所有属性

我的文件是Main.java/company

package  com.company;
import javax.swing.*;
import java.awt.*;
public class Main{
public static void main(String[] args){

 JFrame f=new JFrame("窗体标题");  //建立一个窗体窗体的标题为"窗体标题"
 
   f.setVisible(true);//设置窗体可见
   
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  // f.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  // f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  
/*EXIT_ON_CLOSE(按关闭那把×之后,隐藏窗口,并停止程序
 DO_NOTHING_ON_CLOSE 无任何操作,按什么都没用
  HIDE_ON_CLOSE 隐藏窗体,但不停止程序
  DISPOSE_ON_CLOSE释放窗体资源,所以关闭窗体之后过一会程序也结束
  
*/


   f.setSize(300,200//设置窗体的大小,宽300像素,高200像素

   f.setLocation(200,200);//设置坐标x:200,y:200.单位:像素
   
//  以上两行可以写成这一个 f.setBounds(200,200,300,200);
// 200,200,是坐标x,y,300,200是大小宽高 width,height
 
   Container c=f.getContentPane();//获取窗体容器
   c.setBackground(Color.white);//设置背景颜色
   JLabel label=new JLabel("这是一个窗体");//建立一个label,label的内容为这是一个窗体
   
   c.add(label);//添加label组件到容器内
   //c.remove(label);//删除容器内的label组件
   c.validate();//验证容器中的组件
  // f.setResizable(false);设置窗体是否可以改变大小
   System.out.println("x="+f.getX()+" y="+f.getY());
   }
}

在这里插入图片描述
实际上开发是下面的这种
1.JFrame窗体

public class Main extends JFrame{//继承,让Main类成为子类,也成为窗体
public Main{
  //把上面的代码删除所有的"f."
  //eg.
  setVisible(true);
  setBounds(200,200,300,200);
  setTile("窗体的标题");
  }
  public static void main(){
  new Main();
  }
}
package  com.company;
import javax.swing.*;
import java.awt.*;
public class Main extends JFrame{
    public Main(){
    setTitle("窗体标题");
 setVisible(true);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setSize(300,200);
 setLocation(200,200);
 //setBounds(200,200,300,200);
 Container c=getContentPane();
 c.setBackground(Color.white);
 JLabel l=new JLabel("this  is a jframe");
 c.add(l);
 //c.remove(l);
 c.validate();
// setResizable(false);
 System.out.println("x="+getX()+"  y="+getY());
}
public static void main(String[] args){
    new Main();
 }
}   

在这里插入图片描述

在这里插入图片描述

2.JDialog对话框窗体

package  com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JDialog{
    public Main(JFrame frame){
        super(frame,"对话框标题",true);
     //super(父参数对象,对话框标题,是否阻塞父窗体);

        Container c=getContentPane();//获取窗体容器
        c.add(new JLabel("这是一个对话框"));//在容器内加label组件
        setBounds(100,100,100,100);
        }
 public static void main(String[] args){
    JFrame f=new JFrame("父窗体");//建立一个窗体
    f.setBounds(50,50,300,300);
    Container c=f.getContentPane();//获取窗体容器
    JButton btn=new JButton("弹出对话框");//建立一个button
    c.setLayout(new FlowLayout());//设置布局使用流布局
    c.add(btn);        //把button增加到在容器内
    f.setVisible(true); //窗体可见
    f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    
    btn.addActionListener(new ActionListener() {//按钮的监听事件
        @Override
        public void actionPerformed(ActionEvent e) {
            Main m=new Main(f);//一点击按钮就跳到Main的方法去,把父窗体f传进去
            m.setVisible(true);
            }
         });
      }
    }          

3.JLabel标签
标签是一个包含说明性文字,图标或两者兼有的用户组件
创建标签:
用构造函数:
1.JLabel(String):带指定文本的标签
2.JLabel(String,int)带指定文本和对齐方式的标签
3.JLabel(String,Icon,int )带指定文本,图标和对齐方式的标签
标签的对齐方式决定了其文本和图标窗口的占据区域的对齐关系。SwingConstants接口的三个静态类变量用于指定对齐方式:LEFT,CENTER,RIGHT。
标签的内容可以使用方法setText(String)或setIcon(Icon)来设置,
还可以使用getText()和getIcon()来获取这些内容

JLabel f=new JLabel("feeds:   ",SwingConstants.LEFT);左对齐
JLabel s=new JLabel("URL:  ",SwingConstants.CENTER);居中
JLabel w=new JLabel("DATA: ",SwingConstants.RIGHT);右对齐
panel.add(f);
panel.add(s);
panel.add(w);
package com.company;
import javax.swing.*;
import java.awt.*;
public class Main extends JFrame{
    public Main(){
        setBounds(100,100,100,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c=getContentPane();
        setVisible(true);
        JLabel label =new JLabel("这是一个标签");//建立一个标签的内容为这是一个标签
        label.setText("更改标签内容");  //将标签内容为更改标签内容
        System.out.println(label.getText());//输出标签的内容
        label.setFont(new Font("楷体",Font.BOLD,15));//标签的字类型,加粗,字号为15
        label.setForeground(Color.GREEN);//标签的字体的颜色,更改前景色
        c.add(label);//将标签label加到容器内
       }
        public static void main(String[] args){
         new Main();
    }
}

在这里插入图片描述

4.Jlabel中添加图片

//JLabel picture添加图片用JLabel添加
package com.company;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class Main extends JFrame{
    public Main(){
        setBounds(100,100,500,350);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        JLabel label=new JLabel("这是一个展示图片的标签");
        URL url=Main.class.getResource("java.jpg");//方法一:获取图片URL路径
        Icon icon=new ImageIcon(url);//获取相应路径下的图片文件
        label.setIcon(icon);//添加图片
        c.add(label);
        setVisible(true);
        label.setSize(20,20);//即使设置标签的大小,也不会改变图片大小
        }
      public static void main(String[] args) {
    new Main();
   }  
}  
方法一:
  URL url=Main.class.getResource("java.jpg");//方法一:获取图片URL路径
 Icon icon=new ImageIcon(url);//获取相应路径下的图片文件
 label.setIcon(icon);//添加图片
方法二:
Icon icon=new ImageIcon("D:\\idea code\\src\\com\\company\\java.jpg");//获取相应路径下的图片文件
label.setIcon(icon);//添加图片

我把图片保存在src中名字为javahe格式为jpg
在这里插入图片描述
我用的是我室友的表情包哈哈哈哈哈哈哈哈哈哈,她看到会打死我感觉
在这里插入图片描述

要想看图片的路径,可以右键图片java.jpg然后点Copy Path即可粘贴到第二种方法的路径下
5.JComboBox下拉框

package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame{
    public Main(){
        setBounds(100,100,190,120);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(null);//空布局
        JComboBox<String> comboBox=new JComboBox<>();       //第一种方法
        String items[]={"identity card","student card","employee.card"};  //第一种方法
        ComboBoxModel cm=new DefaultComboBoxModel<>(items);  //第一种方法
        comboBox.setModel(cm);  //第一种方法
        setVisible(true);
        JButton btn=new JButton("打印");
        btn.addActionListener(new ActionListener() {//按下按钮发生以下事件输出下拉框选中的索引和选中的值
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("选中的索引:"+comboBox.getSelectedIndex());
                System.out.println("选中的值:"+comboBox.getSelectedItem());
                }
                });
   btn.setBounds(100,10,60,20);
  c.add(btn);
  
  comboBox.setBounds(10,10,80,21);
  c.add(comboBox);
  setVisible(true);
  }
  public static void main(String[] args) {
  new Main();
  }
   }
选中combobox中的内容按打印按钮输出的结果:
选中的索引:0
选中的值:identity card
选中的索引:1
选中的值:student card
选中的索引:2
选中的值:employee.card


 方法:添加combobox中的内容
 方法一:
    JComboBox<String> comboBox=new JComboBox<>();       
        String items[]={"identity card","student card","employee.card"};  
        ComboBoxModel cm=new DefaultComboBoxModel<>(items);  //创建一个下拉列表模型
        comboBox.setModel(cm);//向列表中添加数据模型
        
方法二:
String items[]={"identity card","student card","employee.card"};
JComboBox<String> comboBox=new JComboBox<>(items);//使用String添加下拉列表元素

方法三:
JComboBox<String> comboBox=new JComboBox<>();
comboBox.addItem("identity card");
comboBox.addItem("student card");
comboBox.addItem("employee.card");

在这里插入图片描述

加一行comboBox.setEditable(true);是否可以编辑,可以写下拉框的值,但是输出的索引为-1,是模型外的一种

在这里插入图片描述
6.JList下拉框

package com.company;
import javax.swing.*;
import java.awt.*;

public class Main extends JFrame{
    public Main(){
    setBounds(100,100,217,16);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(null);
        String items[]={"first","second","third","forth","fifth","sixth","seventh"};
        JList<String> jl=new JList<>(items);//给JList添加内容的第一种方法
      jl.setBounds(10,10,100,100);
        c.add(jl);
       setVisible(true);
      }
 

public static void main(String[] args) {
    new Main();
}
}
/给JList添加内容的方法:
第一种;
  String items[]={"first","second","third","forth","fifth","sixth","seventh"};
     JList<String> jl=new JList<>(items);
第二种:
   DefaultListModel<String> model =new DefaultListModel<>();//列表框的数据模型
        for(String tmp:items){
            model.addElement(tmp);
        }
        JList<String> jl=new JList<>();
      //  model.addElement("添加元素");//添加元素
        jl.setModel(model);//列表载入数据模型
      

可以看到列表框有些内容都没有显示出来

可以看到列表框的有些内容都没有显示出来
所以下面加滚动条使可以看到所有的内容
在这里插入图片描述
上面的代码改成下面的

String items[]={"first","second","third","forth","fifth","sixth","seventh"};
JList<String> jl=new JList<>(items);
JScrollPane js=new JScrollPane(jl);//为列表添加滚动条
js.setBounds(10,10,100,100);//不需要给JList设置坐标和大小
c.add(js);
package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame{
    public Main() {
        setBounds(100,100,217,167);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(null);
        String items[]={"first","second","third","forth","fifth","sixth"};
        DefaultListModel<String> model =new DefaultListModel<>();//用的是第二种方法
        for(String tmp:items){
            model.addElement(tmp);
        }
        JList<String> jl=new JList<>();
        jl.setModel(model);
        JScrollPane js=new JScrollPane(jl);
        js.setBounds(10,10,100,100);
        c.add(js);
        /*
        1.SINGLE_SELECTION 单选模型 一次只能选择一个
        2.SINGLE_INTERVAL_SELECTION只能连续选择相邻的元素
        3.MULTIPLE_INTERVAL_SELECTION随便选
        */
        jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置选择模式

        JButton btn=new JButton("affirm");
        btn.setBounds(120,90,70,25);
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                java.util.List<String> values=jl.getSelectedValuesList();
                for(String tmp:values){
                    System.out.println(tmp);
                }
                System.out.println("-------end---------");
                   }
        });
        c.add(btn);

        setVisible(true);

    }
    public static void main(String[] args) {
        new Main();
    }
}

在这里插入图片描述
选择third之后按affirm出来third

7.JTextField文本框
文本框是界面上的一片区域,用户通过键盘输入,修改其中的内容。能够处理一行输入。
JTextField():空文本框
JTextField(int):指定宽度的文本框
JTextField(String,int):指定宽度,包含指定字符窜的文本框

在这里插入图片描述

package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame{
    public Main(){
        setBounds(100,100,250,100);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(new FlowLayout());//流布局
        JTextField jt=new JTextField();//建立文本框
        jt.setColumns(20);//设置文本框长度为20个长度
        jt.setText("aa");//设置文本内容初始为aa
        jt.setFont(new Font("楷体",Font.BOLD,20));//设置字体格式
        JButton btn=new JButton("affirm!");//一按确认键,输出文本内容,将文本框清空,获取焦点在文本框
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("文本框内容为:"+jt.getText());//得到文本框内容
                jt.setText("");//设置文本框的内容为空,清空文本框
                jt.requestFocus();//清空之后,想再输入将鼠标放进框内点击,但是用了requestFocus自动获取焦点,获取光标
                    }
        });
        c.add(btn);

        c.add(jt);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Main();
    }
}

8.JPasswordField密码框
在这里插入图片描述

package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class  Main extends JFrame{
    public Main() {
   setBounds(100,100,400,100);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(new FlowLayout());//流布局
        
        JPasswordField jp=new JPasswordField();//建立密码框
        
        jp.setColumns(20);//设置密码框的长度为20个字符
        jp.setFont(new Font("Arial",Font.BOLD,18));//设置字体,第一个参数是默认值
        jp.setEchoChar('#');//不写这一行输入的密码就是小圆点,设置回显字符
      /*
       列如:我想要输出的密码为小星星样式[自己可以随意修改]
       注释掉 jp.setFont(new Font("Arial",Font.BOLD,18));
       写jp.setEchoChar('\u2605');
      */

//添加动作监听-回车执行
        jp.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              char ch[]=jp.getPassword();//获取密码的字符数组
              String str=new String(ch);//将字符数组变成字符窜
              System.out.println(str);//输出字符窜也就是你输入的密码
      }
        });
        c.add(jp);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Main();
    }

}

9.JTextArea文本区域
文本区域是能处理多行输入的可编辑文本框。
JTextArea(int,int);行数和列数 为指定值的文本区域
JTextArea(String,int ,int )行数和列数 为指定值且包含指定文本的文本区域
getText()
getSelectedText()
setText(String)
append(String)将指定文本加到当前文本的末尾
insert(String,int)将指定文本插到指定位置
setLineWrap(boolean):指定文本在达到组件边界时,是否自动换行,如果为true,则自动换行
setWrapStyleWord(boolean)指定如何换行:是将当前单词(参数为true时)还是当前字符(参数为false)换到下一行

package com.company;
import javax.swing.*;
public class Main extends JFrame{
    JTextField username=new JTextField(15);
    JPasswordField password=new JPasswordField(15);
    JTextArea comments=new JTextArea(4,15);
    JButton ok=new JButton("OK");
    JButton cancel=new JButton("Cancel");
    public Main(){
     super("Account Information");
     setSize(300,220);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     JPanel pane =new JPanel();
     JLabel usernameLabel=new JLabel("Username: ");
     JLabel passwordLabel=new JLabel("Password:  ");
     JLabel commentsLabel=new JLabel("Comments:      ");
     comments.setLineWrap(true);
     comments.setWrapStyleWord(true);
     pane.add(usernameLabel);
     pane.add(username);
     pane.add(passwordLabel);
     pane.add(password);
     pane.add(commentsLabel);
     pane.add(comments);
     pane.add(ok);
     pane.add(cancel);
     add(pane);
     setVisible(true);

    }

    public static void main(String[] args) {
   new Main();

    }
  }

在这里插入图片描述

package com.company;
import javax.swing.*;
import java.awt.*;

public class Main extends JFrame{
    public Main(){
      setBounds(100,100,100,400);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.setLayout(new FlowLayout());
        JTextArea area=new JTextArea();
        area.setText("这是文本域");//设定文本内容
        area.setRows(5);//设定行
        area.setColumns(20);//设定列数,也就是宽
        area.append("添加内容");//添加内容
        area.insert("插入",2);//在第二个字符后面插入内容“插入”
        area.setFont(new Font("楷体",Font.BOLD,20));//设置字体

        JScrollPane js=new JScrollPane(area);//给文本域添加滚动条
        c.add(js);
        setVisible(true);

    }

    public static void main(String[] args) {
        new Main();
    }
  }

在这里插入图片描述

10.ImageIcon图标
图标是一个小图片,可被放置在按钮,标签或其他用户界面元素上

要创建ImageIcon对象,可调用其构造函数,并将图形文件名作为参数传递给它。
ImageIcon s=new ImageIcon("java.gif");
//很自然地认为当前类文件和图片在同一路径下即可。
//其实所谓的相对路径起点是工程的根目录,即project。
JButton btn=new JButton(s);
JPanel pane=new JPanel();
pane.add(button);
add(pane);
setVisible(true);
以上是加载文件java.gif中的图标,并创建了一个以该图标作为标签的JButton

可用的图标

package com.company;
import javax.swing.*;
public class Main extends JFrame{
   
     public Main(){
         super("Icon Frame");
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         JPanel panel=new JPanel();
         //create Icons
         ImageIcon loadIcon=new ImageIcon("D:\\idea code\\src\\com\\company\\Load.png");
         ImageIcon saveIcon=new ImageIcon("D:\\idea code\\src\\com\\company\\Save.png");
         ImageIcon subscribeIcon=new ImageIcon("D:\\idea code\\src\\com\\company\\Subscribe.gif");
         ImageIcon unsubscribeIcon=new ImageIcon("D:\\idea code\\src\\com\\company\\Unsubscribe.gif");

         //creates buttons
       JButton load=new JButton("Load",loadIcon);
       JButton save=new JButton("Save",saveIcon);
       JButton subscribe=new JButton("Subscribe",subscribeIcon);
       JButton unsubscribe=new JButton("Unsubscribe",unsubscribeIcon);

       //add buttons to panel
         panel.add(load);
         panel.add(save);
         panel.add(subscribe);
         panel.add(unsubscribe);

         //add the panel to a frame
         add(panel);
         pack();
         setVisible(true);

     }

    public static void main(String[] args) {
        new Main();

    }
}

在这里插入图片描述

11.监听事件
监听和事件
监听Listener ->盯着 事件Event
KeyListener 键盘 KeyEvent
MouseListener 鼠标 MouseEvent
WindowListener 窗体 WindowEvent
ActionListener 动作 ActionEvent

动作事件监听器
ActionListener 组件.addActionListener();
actionPerformed(ActionEvent e) 组件发生操作时调用的方法
ActionEvent为动作事件

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值