【韩顺平 零基础30天学会Java】GUI


这篇文章主要介绍如何给 JFrame 添加 JPanel 和 KeyListener 。

💡正文

  1. 创建窗口

    import javax.swing.JFrame;		// 窗体
    class Frame extends JFrame{
        public Frame() {}
    }
    
  2. 创建面板

    import javax.swing.JPanel;		// 面板
    import java.awt.Graphics;		// 画笔
    class Panel extends JPanel{
        @Override
        public void paint(Graphics g) {// 该方法会被调用
            super.paint(g);
            // TODO 面板内容
            // 画线条
            g.drawLine(10, 10, 110, 110);
            // 画⚪	fill 填充
            g.drawOval(10, 10, 100, 100);
            // 画◻️   fill 填充
            g.drawRect(10, 10, 100, 100);
            // Image  String 
            // setFont  setColor
        }
    }
    

    paint 方法被调用的情况

    • 窗口最小化或窗口从最小化状态恢复
    • 窗口大小发生变化
    • repaint 方法调用
  3. 创建按键监听

    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    class Key implements KeyListener{
    
    	@Override
    	public void keyTyped(KeyEvent e) {
    		System.out.println(e.getKeyChar());
    	}
    
    	@Override
    	public void keyPressed(KeyEvent e) {
    		System.out.println(e.getKeyChar());
    	}
    
    	@Override
    	public void keyReleased(KeyEvent e) {
    		System.err.println(e.getKeyChar());
    	}
    
    }
    
  4. 创建鼠标监听

    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    class Mouse implements MouseListener{
    
        @Override
        public void mouseClicked(MouseEvent e) {
            System.out.println("mouseClicked\t"+e.getX()+"-"+e.getY());
        }
    
        @Override
        public void mousePressed(MouseEvent e) {
            System.out.println("mousePressed\t"+e.getX()+"-"+e.getY());
        }
    
        @Override
        public void mouseReleased(MouseEvent e) {
            System.out.println("mouseReleased\t"+e.getX()+"-"+e.getY());
        }
    
        @Override
        public void mouseEntered(MouseEvent e) {
            System.out.println("mouseEntered\t"+e.getX()+"-"+e.getY());
        }
    
        @Override
        public void mouseExited(MouseEvent e) {
            System.out.println("mouseEntered\t"+e.getX()+"-"+e.getY());
        }
    }
    
    
  5. 将面板和按键添加到窗口

    Frame f = new Frame();		// 实例化窗体
    Panel p = new Panel();		// 实例化面板
    Key k = new Key();			// 实例化按键监听
    Mouse m = new Mouse();		// 实例化鼠标监听
    f.add(p);					// 面板添加到窗体
    f.addKeyListener(k);		// 按键监听添加到窗体
    f.addMouseListener(m);		// 鼠标监听添加到窗体
    
  6. 设置窗口大小

    f.setSize(100, 100);
    
  7. 设置窗口可见

    f.setVisible(true);
    
  8. 设置窗口关闭因子

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    

❌关于 event 包不存在问题

当我在 VSCode 平台导入 java.awt.event 时提示没有该包,当时我第一反应就是:什么鬼 Java 自己提供的包没有你逗我玩呢❓
于是我去Java安装目录打开 src.zip,发现里面有 event 这个文件,那么只有一个可能就是当前工作区里面没有加载这个包。为了验证我打开IDEA并在里面尝试导入 event ,这次可以顺利导入成功使用,这个时候我跑到VSCode里面导入发现可以顺利加载进来。

💡导入外部包

这里顺便说一下如何使用VSCode和IDEA导入外部引用库,也是比较简单的。
在这里插入图片描述

vscode 图1

在这里插入图片描述

vscode 图2

在这里插入图片描述

IDEA 图1

在这里插入图片描述

IDEA 图2

💡各个包的作用

java.lang:Java基本包,默认引用不需要用代码引用

java.util:系统提供的工具包

java.net:网络包,网络开发

java.awt:GUI包,即界面开发


如果你是无意刷到这篇文章并看到这里,希望你给我的文章来一个赞赞👍👍。如果你不同意其中的内容或有什么问题都可以在下方评论区留下你的想法或疑惑,谢谢你的支持!!😀😀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hjhcos

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

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

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

打赏作者

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

抵扣说明:

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

余额充值