这篇文章主要介绍如何给 JFrame 添加 JPanel 和 KeyListener 。
💡正文
-
创建窗口
import javax.swing.JFrame; // 窗体 class Frame extends JFrame{ public Frame() {} }
-
创建面板
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 方法调用
-
创建按键监听
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()); } }
-
创建鼠标监听
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()); } }
-
将面板和按键添加到窗口
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); // 鼠标监听添加到窗体
-
设置窗口大小
f.setSize(100, 100);
-
设置窗口可见
f.setVisible(true);
-
设置窗口关闭因子
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
❌关于 event 包不存在问题
当我在 VSCode 平台导入 java.awt.event
时提示没有该包,当时我第一反应就是:什么鬼 Java 自己提供的包没有你逗我玩呢❓
于是我去Java安装目录打开 src.zip,发现里面有 event 这个文件,那么只有一个可能就是当前工作区里面没有加载这个包。为了验证我打开IDEA并在里面尝试导入 event ,这次可以顺利导入成功使用,这个时候我跑到VSCode里面导入发现可以顺利加载进来。
💡导入外部包
这里顺便说一下如何使用VSCode和IDEA导入外部引用库,也是比较简单的。
💡各个包的作用
java.lang:Java基本包,默认引用不需要用代码引用
java.util:系统提供的工具包
java.net:网络包,网络开发
java.awt:GUI包,即界面开发
如果你是无意刷到这篇文章并看到这里,希望你给我的文章来一个赞赞👍👍。如果你不同意其中的内容或有什么问题都可以在下方评论区留下你的想法或疑惑,谢谢你的支持!!😀😀