swing事件详解

1. 窗体事件

1.1 说明

        对窗体进行操作时,例如窗体的打开,关闭,激活,停用等,这些动作都属于窗体事件。一般通过addWindowListener绑定窗体事件。可以通过 WindowListener接口和WindowAdapter抽象类实现窗口监听,WindowAdapter可只重写需要的监听方法。监听的事件源为窗口对象。
        类外还有其他的窗体事件WindowFocusListener(焦点),WindowStateListener(状态),可用于窗口的焦点获取与失去、状态改变的事件监听。

1.2 事件监听方法

方法描述
windowOpened(WindowEvent e)在第一次打开窗口可见时调用。
windowClosing(WindowEvent e)当从窗口的系统菜单关闭窗口时调用。
windowClosed(WindowEvent e)在窗口上调用dispose而关闭窗口时调用。
windowIconified(WindowEvent e)当窗口从正常状态更改为最小化状态时调用。
windowDeiconified(WindowEvent e)当窗口从最小化状态更改为正常状态时调用。
windowActivated(WindowEvent e)当窗口被设置为活动窗口时调用。
windowDeactivated(WindowEvent e)当窗口不再是活动窗口时调用。

1.3 事件(WindowEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getWindow()返回事件的发起者。
getOppositeWindow()返回与此焦点或激活更改相关的其他窗口。
getOldState()返回窗口的前一个状态。
getNewState()返回窗口的新状态。

1.4 示例

        //窗体注册监听
        jFrame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                System.out.println("窗体打开事件");
            }
            @Override
            public void windowIconified(WindowEvent e) {
                System.out.println("窗体图标化事件/最小化");
            }
            @Override
            public void windowDeiconified(WindowEvent e) {
                System.out.println("窗体取消图标化事件/取消最小化");
            }
            @Override
            public void windowDeactivated(WindowEvent e) {
                System.out.println("窗体停用事件");
            }
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗体正在关闭事件");
            }
            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("窗体关闭事件");
                //被执行,看不到效果
            }
            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("窗体激活事件");
            }
        });
        //窗体注册监听,可使用 WindowAdapter 只重写需要的监听方法
        jFrame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗体正在关闭事件");
            }
        });
        jFrame.addWindowFocusListener(new WindowFocusListener() {
            @Override
            public void windowGainedFocus(WindowEvent e) {
                System.out.println("窗口获取到焦点时调用" );
            }
            @Override
            public void windowLostFocus(WindowEvent e) {
                System.out.println("窗口失去到焦点时调用" );
            }
        });
        jFrame.addWindowStateListener(e -> {
            System.out.println("窗口状态改变 " + e);
        });

2. 鼠标事件

2.1 说明

        通过addMouseListener添加对鼠标单击、按下与释放、移入与移出事件的监听。可以通过 MouseListener接口和MouseAdapter抽象类实现鼠标监听,MouseAdapter可只重写需要的监听方法。监听的事件源为所有组件对象。
        通过addMouseMotionListener添加对鼠标的移动、拖拽事件监听。可以通过 MouseMotionListener接口和MouseMotionAdapter抽象类实现鼠标监听,MouseMotionAdapter可只重写需要的监听方法。监听的事件源为所有组件对象。
        通过addMouseWheelListener添加对鼠标的滚轮进行事件监听。可以通过 MouseWheelListener接口和MouseWheelAdapter抽象类实现鼠标监听,MouseWheelAdapter可只重写需要的监听方法。监听的事件源为所有组件对象。

2.2 事件监听方法

方法描述
MouseListener
mouseClicked(MouseEvent e)当在组件上单击(按下并释放)鼠标按钮时调用。
mousePressed(MouseEvent e)当在组件上按下鼠标按钮时调用。
mouseReleased(MouseEvent e)当组件上的鼠标按钮被释放时调用。
mouseEntered(MouseEvent e)当鼠标进入组件时调用。
mouseExited(MouseEvent e)当鼠标离开组件时调用。
MouseMotionListener
mouseDragged(MouseEvent e)当鼠标拖拽时调用。
mouseMoved(MouseEvent e)当鼠标移动时调用。
MouseWheelListener
mouseWheelMoved(MouseWheelEvent e)当鼠标滚动滚动时调用。

2.3 事件常用方法

方法描述
MouseEvent
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。
getLocationOnScreen()返回事件的绝对x、y位置。
getXOnScreen()返回事件的绝对水平x位置。
getYOnScreen()返回事件的绝对垂直y位置。
getModifiersEx()获取修饰符
getX()返回事件相对于源组件的水平x位置。
getY()返回事件相对于源组件的垂直位置。
getPoint()返回事件相对于源组件的x、y位置。
translatePoint(int x, int y)通过添加指定的x(水平)和y(垂直)偏移量,将事件坐标转换为新位置。
getClickCount()返回与此事件关联的鼠标单击次数。
getButton()

返回哪个(如果有的话)鼠标按钮改变了状态。

1-左键、2-滚轮、3-右键

isPopupTrigger()返回此鼠标事件是否是平台的弹出式菜单触发事件。
getMouseModifiersText(int modifiers)返回一个String实例,描述在事件发生期间按下的修饰键和鼠标按钮,如“Shift”或“Ctrl+Shift”。
MouseWheelEvent(MouseEvent的子类)
getScrollType()返回响应此事件时应发生的滚动类型。有如下值:MouseWheelEvent.WHEEL_UNIT_SCROLL   以“单位”表示滚动的常量
MouseWheelEvent.WHEEL_BLOCK_SCROLL 按“块”滚动的常量
getScrollAmount()返回每次单击鼠标滚轮旋转时应该滚动的单位数。
getWheelRotation()以整数形式返回鼠标滚轮旋转的“点击”次数。
getPreciseWheelRotation()以双精度返回鼠标滚轮旋转的“点击”次数。
getUnitsToScroll()返回要滚动的单位数。

 2.4 示例

        jButton.addMouseListener(new MouseListener() {
            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("鼠标释放事件");
            }
            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("鼠标被按下事件");
            }
            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("鼠标移出按钮区域事件");

            }
            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("鼠标进入按钮区域事件");

            }
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标完成点击事件");
            }
        });
        jButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标完成点击事件");
            }
        });
        JPanel jPanel =new JPanel();
        jPanel.addMouseMotionListener(new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {
                System.out.println("鼠标拖到时调用");
            }

            @Override
            public void mouseMoved(MouseEvent e) {
                System.out.println("鼠标移动时调用");
            }
        });
        JPanel jPanel =new JPanel();
        jPanel.addMouseWheelListener(e ->{
            System.out.println("滑动滚轮时调用");
        } );

3. 键盘事件

3.1 说明

        对键盘输入、按下与释放事件进行监听。一般通过addKeyListener绑定键盘事件。可以通过 KeyListener接口和KeyAdapter抽象类实现键盘监听,KeyAdapter可只重写需要的监听方法。监听的事件源为所有能接受焦点的组件对象。

3.2 事件监听方法

方法描述
keyTyped(KeyEvent e)当键输入时调用。
keyPressed(KeyEvent e)当键被按下时调用。
keyReleased(KeyEvent e)当键被释放时调用。

3.3 事件(KeyEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。
getKeyCode()返回与此事件中的键相关联的整数keyCode。
getKeyChar()返回与此事件中的键相关联的字符。
getKeyLocation()返回引发此键事件的键的位置。
getKeyText(int keyCode)返回描述keyCode的字符串,
getKeyModifiersText(int modifiers)返回描述修饰键的字符串,如“Shift”或“Ctrl+Shift”。
isActionKey()返回此事件中的键是否为“操作”键。

3.4  示例

        jTextField.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
                System.out.println("当键输入时调用。");
            }
            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("当键被按下时调用。");
            }
            @Override
            public void keyReleased(KeyEvent e) {
                System.out.println("当键被释放时调用。");
            }
        });
        jTextField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                System.out.println("当键输入时调用。");
            }
        });

4. 焦点事件

4.1 说明

        对组件获取与失去事件进行监听。一般通过addFocusListener绑定焦点事件。可以通过 FocusListener接口和FocusAdapter抽象类实现焦点监听,FocusAdapter可只重写需要的监听方法。监听的事件源为所有能接受焦点的组件对象。

4.2 事件监听方法

方法描述
focusGained(FocusEvent e)当组件获取到焦点时调用
focusLost(FocusEvent e)当组件失去焦点时调用

4.3 事件(FocusEvent )常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。
isTemporary()判断焦点是否是临时的,变化是暂时的,则为True
getOppositeComponent()返回与此焦点更改相关的其他组件。

4.4  示例

        jTextField.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {
                System.out.println("获取焦点");
            }
            @Override
            public void focusLost(FocusEvent e) {
                System.out.println("失去焦点");
            }
        });
        jTextField.addFocusListener(new FocusAdapter() {
            @Override
            public void focusGained(FocusEvent e) {
                System.out.println("获取焦点");

            }
        });

5. 组件事件

4.1 说明

      对组件大小、位置、显隐状态改变事件进行监听。一般通过addComponentListener绑定组件事件。可以通过 ComponentListener接口和ComponentAdapter抽象类实现组件监听,ComponentAdapter可只重写需要的监听方法。监听的事件源为所有组件对象。

4.2 事件监听方法

方法描述
componentResized(ComponentEvent e)当组件大小调整时调用。
componentMoved(ComponentEvent e)当组件位置调整时调用。
componentShown(ComponentEvent e)当组件显示时调用。
componentHidden(ComponentEvent e)当组件隐藏时调用。

4.3 事件(ComponentEvent )常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。

4.4  示例

        jTextField.addComponentListener(new ComponentListener() {
            @Override
            public void componentResized(ComponentEvent e) {
                System.out.println("组件大小调整时调用");
            }
            @Override
            public void componentMoved(ComponentEvent e) {
                System.out.println("组件位置调整时调用");
            }
            @Override
            public void componentShown(ComponentEvent e) {
                System.out.println("组件显示时调用");
            }
            @Override
            public void componentHidden(ComponentEvent e) {
                System.out.println("组件隐藏时调用");
            }
        });
        jTextField.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                System.out.println("组件大小调整时调用");
            }
        });

6. 容器事件

6.1 说明

      对容器中添加或删除组件的事件进行监听。一般通过addContainerListener绑定容器事件。可以通过 ContainerListener接口和ContainerAdapter抽象类实现容器监听,ContainerAdapter可只重写需要的监听方法。监听的事件源为所有容器对象。

6.2 事件监听方法

方法描述
componentAdded(ContainerEvent e)当添加组件时调用。
componentRemoved(ContainerEvent e)当删除组件时调用

6.3 事件(ContainerEvent )常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。

6.4  示例

        jPanel.addContainerListener(new ContainerListener() {
            @Override
            public void componentAdded(ContainerEvent e) {
                System.out.println("添加组件时调用");
            }
            @Override
            public void componentRemoved(ContainerEvent e) {
                System.out.println("删除组件时调用");
            }
        });
        jPanel.addContainerListener(new ContainerAdapter() {
            @Override
            public void componentAdded(ContainerEvent e) {
                System.out.println("添加组件时调用");
            }
        });

7. 动作事件

7.1 说明

      对点击按钮或菜单等事件进行监听。一般通过addActionListener绑定动作事件。可以通过 ActionListener接口实现动作监听,只有一个actionPerformed方法,可使用Lambda 表达式。监听的事件源为按钮、列表、菜单项等对象。

7.2 事件(ActionEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。
getActionCommand()返回与此操作关联的命令字符串。
getWhen()返回此事件发生时间的时间戳。
getModifiers()返回在此操作事件期间按下的修饰符键。

7.3  示例

        jButton.addActionListener(e -> {
            System.out.println("点击按钮调用");
        });

8. 调节事件

8.1 说明

      对滚动条调节的事件进行监听。一般通过addAdjustmentListener绑定调节事件。可以通过 AdjustmentListener接口实现调节监听,只有一个adjustmentValueChanged方法,可使用Lambda 表达式。监听的事件源为滚动条对象。

8.2 事件(AdjustmentEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getAdjustable()返回事件起源的可调对象。
getValue()返回调整事件中的当前值。
getAdjustmentType()

返回导致值更改事件的调整类型。有如下值:

AdjustmentEvent.UNIT_INCREMENT       1   单位增量调节类型。
AdjustmentEvent.UNIT_DECREMENT      2   单位减量调节类型。
AdjustmentEvent.BLOCK_INCREMENT    3   挡块增量调节类型。
AdjustmentEvent.BLOCK_DECREMENT   4   挡块减量调节类型。

getValueIsAdjusting()是否是多个调整事件之一。

8.3  示例

        JScrollBar  jScrollBar = new JScrollBar();
        jScrollBar.addAdjustmentListener(e -> {
            System.out.println("调节滚动条时调用");
        });

10. 选项事件

10.1 说明

      对点复选框及等事件进行监听。一般通过addItemListener绑定选项事件。可以通过 ItemListener接口实现选项监听,只有一个itemStateChanged方法,可使用Lambda 表达式。监听的事件源为单选框、复选框、列表、菜单项等对象。

10.2 事件(ItemEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getItemSelectable()返回事件的发起者。
getItem()返回受事件影响的项。
getStateChange()返回状态更改的类型(选中或取消选中)。

10.3  示例

        JCheckBox jCheckBox = new JCheckBox("选项");
        jCheckBox.addItemListener(e -> {
            System.out.println("切换选项时调用");
        });
        JRadioButton jRadioButton = new JRadioButton("选项");
        jRadioButton.addItemListener(e -> {
            System.out.println("切换选项时调用");
        });
        JComboBox jComboBox=new JComboBox(new Vector<>(Arrays.asList("A","B")));
        jComboBox.addItemListener(e -> {
            System.out.println("切换选项时调用");
        });
        List jList =new List(5);
        jList.addItemListener(e -> {
            System.out.println("切换选项时调用");
        });
        JMenuItem jMenuItem=new JMenuItem("菜单项");
        jMenuItem.addItemListener(e -> {
            System.out.println("切换选项时调用");
        });

11. 文本事件

11.1 说明

      对文本框、文本域修改事件进行监听。一般通过addTextListener绑定文本事件。可以通过 TextListener接口实现文本监听,只有一个textValueChanged方法,可使用Lambda 表达式。监听的事件源为文本框、文本域等对象。

11.2 事件(TextEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。

11.3  示例

        TextField textField=new TextField();
        textField.addTextListener(e -> {
            System.out.println("文本修改");
        });
        TextArea textArea=new TextArea();
        textArea.addTextListener(e -> {
            System.out.println("文本修改");
        });

12. 层次结构事件

12.1 说明

        包含层次结构事件与层次结构边框事件,可通过addHierarchyListener和addHierarchyBoundsListener绑定事件。监听的事件源为组件对象。

12.2 事件(HierarchyEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getComponent()返回事件的发起者。
getChanged()返回已更改的层次结构顶部的组件。
getChangedParent()返回getChanged()返回的组件的父组件。
getChangeFlags()HIERARCHY_CHANGED类型,如果不是HIERARCHY_CHANGED事件,则为0

12.3  示例

        JButton jButton = new JButton("点击");
        jButton.addHierarchyListener(e -> {
            System.out.println("添加指定的层次结构侦听器。 ");
        });
        jButton.addHierarchyBoundsListener(new HierarchyBoundsListener() {
            @Override
            public void ancestorMoved(HierarchyEvent e) {
                System.out.println("移动层次结构时调用。");
            }
            @Override
            public void ancestorResized(HierarchyEvent e) {
                System.out.println("改变层次结构大小时调用。 ");
            }
        });

13. 值改变事件

13.1 说明

        主要用于监听组件值改变的事件,可通过addChangeListener绑定事件。监听的事件源为组件对象。

13.2 事件(ChangeEvent)常用方法

方法描述
toString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getSource()返回事件的发起者对象。

13.3 示例

        JProgressBar jProgressBar = new JProgressBar(0, 100);  //进度条
        jProgressBar.addChangeListener(e -> {
            System.out.println("进度条值改变时调用");
        });

14. 输入法事件

14.1 说明

        主要用于监听输入法的事件,可通过addInputMethodListener绑定事件。监听的事件源为文本组件对象。

14.2 事件(InputMethodEvent)常用方法

方法描述
paramString()返回标识此事件的参数字符串。此方法对于事件日志记录和调试非常有用。
getText()获取已提交和已组合的文本。
getCommittedCharacterCount()获取文本中已提交的字符数。
getCaret()获取插入符号。
getVisiblePosition()获取最重要的可见位置。
consume()使用此事件,使其不会被发起该事件的源以默认方式处理。
isConsumed()返回此事件是否已被消耗。
getWhen()返回此事件发生时间的时间戳。

14.3  示例

        JTextField jTextField=new JTextField();
        jTextField.addInputMethodListener(new InputMethodListener() {
            @Override
            public void inputMethodTextChanged(InputMethodEvent event) {
                System.out.println("当通过输入法输入的文本发生更改时调用。" + event);
            }
            @Override
            public void caretPositionChanged(InputMethodEvent event) {
                System.out.println("当组合文本中的插入符号发生更改时调用。" + event);
            }
        });

15. 插入事件

15.1 说明

        主要用于监听光标插入符号的事件,可通过addCaretListener绑定事件。监听的事件源为文本组件对象。

15.2 事件(CaretEvent)常用方法

方法描述
getSource()返回事件的发起者对象。
getDot()获取插入符号的位置,也就是光标位置或选中文本的开头位置。
getMark()获取选择文本的另一端的位置。如果没有选择,这将与Dot相同。

 15.3  示例

        JTextField jTextField=new JTextField();
        jTextField.setPreferredSize(new Dimension(200,30));
        jTextField.addCaretListener(e->{
            System.out.println("光标位置改变或选中文本时调用");
        });

16. 属性事件

16.1 说明

        主要用于监听组件属性变化事件,可通过addPropertyChangeListener绑定事件。监听的事件源为容器对象。
        还可以通过addVetoableChangeListener绑定约束属性监听器。

16.2 事件(PropertyChangeEvent)常用方法

方法描述
getPropertyName()获取已更改的属性的名称。
getNewValue()获取属性的新值。
getOldValue()获取属性的原值。
setPropagationId(Object propagationId)
getPropagationId()
获取或设置事件的propagationId对象。

 16.3  示例

        JButton jButton = new JButton("点击");
        //监听所有按钮组件的属性
        jButton.addPropertyChangeListener(e->{
            System.out.println(e);
        });
        //监听按钮background属性
        jButton.addPropertyChangeListener("background",e->{
            System.out.println(e);
        });

17. 祖先事件

17.1 说明

        主要用于监听组件在祖先容器里的添加、移除、移动等变化事件,可通过addAncestorListener绑定事件。监听的事件源为组件对象。

17.2 事件(AncestorEvent)常用方法

方法描述
getAncestor()返回事件实际发生的祖先。
getAncestorParent()返回实际发生事件的祖先的父节点。
getComponent()返回已添加侦听器的组件。

 17.3 示例

        JButton jButton = new JButton("点击");
        jButton.addAncestorListener(new AncestorListener() {
            @Override
            public void ancestorAdded(AncestorEvent event) {
                System.out.println("添加组件时调用。");
            }
            @Override
            public void ancestorRemoved(AncestorEvent event) {
                System.out.println("移除组件时调用。");
            }
            @Override
            public void ancestorMoved(AncestorEvent event) {
                System.out.println("移动组件时调用。");
            }
        });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑重其事,鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值