Java--GUI--AWT--画笔、鼠标监听、窗口监听、键盘监听

Java–GUI–AWT–画笔、鼠标监听、窗口监听、键盘监听

画笔

package com.zy.gui.awt;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 *description: Java--GUI--AWT--画笔
 *@program: 基础语法
 *@author: zy
 *@create: 2023-02-28 21:05
 */
public class StudyPaint extends Frame {
    public static void main(String[] args) {
        new StudyPaint().loadFrame();
    }


    public void loadFrame(){
        setTitle("StudyPaint");
        setVisible(true);
        setBounds(200,200,700,500);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                e.getWindow().dispose();
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        // 设置颜色
        g.setColor(Color.red);
        // 画画
        g.draw3DRect(100,100,200,200,true);
        // 空心圆
        g.drawOval(200,200,100,100);
        // 实心圆
        g.setColor(Color.orange);
        g.fillOval(100,100,100,100);

        g.setColor(Color.black);
    }
}


鼠标监听

package com.zy.gui.awt;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *description: Java--GUI--AWT--鼠标监听
 *@program: 基础语法
 *@author: zy
 *@create: 2023-02-28 21:27
 */
public class StudyMouseListener extends Frame {

    // 存点集合
    private ArrayList pointList;

    public void loadFram(String title){
        setTitle(title);
        setBounds(200,200,500,400);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                e.getWindow().dispose();
            }
        });

         pointList = new ArrayList();

        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                // 存点
                pointList.add(e.getPoint());
                // 刷新画板
                repaint();
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        // 画点
        g.setColor(Color.orange);
        Iterator iterator = pointList.iterator();
        while (iterator.hasNext()){
            Point point = (Point) iterator.next();
            g.fillOval(point.x,point.y,12,12);
        }

        g.setColor(Color.black);
    }

    public static void main(String[] args) {
        new StudyMouseListener().loadFram("鼠标监听之跟随鼠标点击画点");
    }
}

窗口监听

package com.zy.gui.awt;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;

/**
 *description: Java--GUI--AWT--窗口监听
 *@program: 基础语法
 *@author: zy
 *@create: 2023-02-28 22:27
 */
public class StudyWindowListener extends Frame {

    public void loadFram(String title){
        setTitle(title);
        setBounds(200,200,500,400);
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                System.out.println("窗口打开后的监听事件");
            }
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗口关闭时的监听事件");
                // 关闭当前窗口,释放资源
                e.getWindow().dispose();
            }
            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("窗口关闭后的监听事件");
            }
            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("窗口激活时的监听事件");
                ((StudyWindowListener)e.getWindow()).setTitle("激活后的窗口");
            }
            @Override
            public void windowDeactivated(WindowEvent e) {
                System.out.println("窗口未激活时的监听事件");
            }
        });
    }


    public static void main(String[] args) {
        new StudyWindowListener().loadFram("窗口监听");
    }
}

键盘监听

package com.zy.gui.awt;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 *description: Java--GUI--AWT--键盘监听
 *@program: 基础语法
 *@author: zy
 *@create: 2023-02-28 22:48
 */
public class StudyKeyListener extends Frame {

    public void loadFram(String title){
        setTitle(title);
        setBounds(200,200,500,400);
        setVisible(true);

        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗口关闭时的监听事件");
                // 关闭当前窗口,释放资源
                e.getWindow().dispose();
            }
        });

        addKeyListener(new KeyAdapter() {
            /**
             * 当键入键时调用。
             * 当按下键后释放键时发生此事件。
             * @param e
             */
            @Override
            public void keyTyped(KeyEvent e) {
                // 该事件无法读取keyCode
                System.out.println("按下释放后的值:" + e.getKeyChar());
            }
            /**
             * 按下键时调用。
             * @param e
             */
            @Override
            public void keyPressed(KeyEvent e) {
                // e.getKeyCode():按键对应的码
                int keyCode = e.getKeyCode();
                if(keyCode == KeyEvent.VK_UP){
                    System.out.println(keyCode+"=============");
                }
                System.out.println("按下时的值:" + e.getKeyChar());
            }
            /**
             * 在释放键时调用。
             * @param e
             */
            @Override
            public void keyReleased(KeyEvent e) {
                int keyCode = e.getKeyCode();
                if(keyCode == KeyEvent.VK_DOWN){
                    System.out.println(keyCode+"=============");
                }
                System.out.println("释放时的值:" + e.getKeyChar());
            }
        });
    }


    public static void main(String[] args) {
        new StudyKeyListener().loadFram("键盘监听");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Java GUI JPanel 中添加画笔事件,可以按照以下步骤进行操作: 1. 继承 JPanel 类,重写 paintComponent 方法。在该方法中调用父类的 paintComponent 方法,然后使用 Graphics 对象进行绘制操作。 2. 在 JPanel 中注册鼠标事件监听器,如 MouseAdapter 或 MouseMotionAdapter。在事件处理方法中可以获取鼠标坐标等信息,并进行相应的绘制操作。 例如,下面是一个简单的 JPanel 实现,支持鼠标拖动绘制线条的功能: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyPanel extends JPanel { private int lastX, lastY; public MyPanel() { super(); addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { lastX = e.getX(); lastY = e.getY(); } }); addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { Graphics g = getGraphics(); g.drawLine(lastX, lastY, e.getX(), e.getY()); lastX = e.getX(); lastY = e.getY(); } }); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); } } ``` 在该实现中,首先继承了 JPanel 类,并在构造函数中注册了鼠标事件监听器。在鼠标事件监听器中,记录了上一次的鼠标坐标,然后在鼠标拖动事件处理方法中使用 Graphics 对象绘制线条,并更新 lastX 和 lastY 的值。在 paintComponent 方法中则没有进行任何绘制操作,只是调用了父类的 paintComponent 方法。 注意,该实现中没有对 Graphics 对象进行释放操作,这可能会导致内存泄漏和图形闪烁等问题。实际应用中需要根据具体情况进行优化和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值