一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布中绘制的图像根据按下的数值进行缩放 ; 在 AWT 自定义 Canvas 组件中 , 添加按键事件 , 下面定义的...// 基于鼠标位置和比例, 计算最新的偏移 restore(); repaint(); // 重新绘制画布...} } }); 出现问题的博客代码 : 【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像...组件上 , 才能生效 ; 否则就会出现上述情况 , 为 组件设置的 KeyAdapter / KeyListener 监听 , 根本不回调相应的回调函数 ; 将 KeyAdapter / KeyListener...监听器 设置到 JFrame 窗口上 , 此时在该应用中按下对应的按键 , 就会回调 keyPressed 函数 ; public void initKeyListener(JFrame frame
(3)使用键盘监听事件和定时器实现小蛇的移动。 (4)小蛇与食物碰撞的实现。 (5)定义变量存放小蛇长度,遍历数组实现小蛇身体的增加功能。...java.util.Random; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.Timer; //画布类...; public class Ui { public static void main(String[] args){ JFrame frame=new JFrame("无尽版贪吃蛇");...在使用Java编写该项目时遇到了很多问题,在解决问题时,可以对java的面向对象编程有更加深入的理解和认识。 ---- 本项目在一定程度上还有缺陷,仅用于初学者学习,欢迎各位指正。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。...与类适配器模式一样,为使客户端能够使用Adaptee类,我们把Adaptee与Target衔接起来。但这里我们不继承Adaptee,而是把Adaptee封装进Adapter里。...[] args) { JFrame frame = new JFrame(); frame.addKeyListener(new KeyListener() {...JAVA里也为java.awt.KeyListener提供了这样一个适配器:java.awt.KeyAdapter。...我们使用这个适配器来改改上面的代码: public static void main(String[] args) { JFrame frame = new JFrame();
也就是说想要画上东西就需要在Jframe上加入Jpanel。这个时候窗口大小和画布大小就是两个不一样的大小了,如果想要窗口大小自适应画布大小,就可以调用pack这个函数自适应。...但其实如果是仅仅在2D图像上画其实可以使用Graphic2D来画,把Graphic转换成Graphic2D就好了,而paintComponent是没有2D的这个参数的。...首先看一下单缓存,比如要在画布上画上一个圆,现在要挪动这个圆的位置,那么就必须把这个画布上的圆抹掉,然后再新的位置画上。...在我们视觉上就会看到闪烁了一下,有一个经典的解决方法,就是用双缓存,也就是两个画布,用画布的切换来演示动画的运行。...实现键盘监听有两个方法,第一个就是实现接口KeyListener,第二个就是继承KeyAdapter,KeyAdapter其实就是实现了刚刚的那个接口而已,只不过是空方法而已。
.*; @SuppressWarnings({"all"}) public class DrawCircle extends JFrame { //JFrame对应窗口,可以理解成是一个画框...this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//可以显示 } } //...; public class HspTankGame02 extends JFrame { //定义MyPanel MyPanel mp = null; public static...I); this.addKeyListener(mp); //让JFrame 监听mp的键盘事件 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...JPanel implements KeyListener { //定义我的坦克 Hero hero = null; //定义敌人坦克,放入到Vector Vector
JFrame jFrame = new JFrame("兮动人-贪吃蛇小游戏"); // 设置界面大小 jFrame.setBounds(10,10,900,720...面板 JPanel 可以加入到JFrame jFrame.add(new GamePanel()); // 让窗口能够展现出来 jFrame.setVisible...java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...xdr630 * @version 1.0 * @date 2021/2/23 10:06 */ public class GamePanel extends JPanel implements KeyListener...实现效果 完成后也可打成 jar 包,使用终端执行 java -jar xxx.jar 运行,效果和idea运行效果一样,方便移动。
public class StartGame { public static void main(String[] args) { //绘制一个静态窗口 JFrame...JFrame frame = new JFrame("贪吃蛇小游戏"); frame.setBounds(10,10,900,720);//设置大小...import javax.swing.*; public class StartGame {public static void main(String[] args) { //1.绘制一个静态窗口 JFrame...JFrame frame = new JFrame(“贪吃蛇小游戏”); frame.setBounds(10,10,900,720);//设置大小 frame.setResizable(false...JFrame frame = new JFrame("贪吃蛇小游戏"); frame.setBounds(10,10,900,720);//设置大小
jframe = null; public AgentClinet(){ jframe = new JFrame(""); jframe.setSize(600...java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...(scrollPane); timeText.addKeyListener(new KeyListener() { @Override...java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...(scrollPane); timeText.addKeyListener(new KeyListener() { @Override public
public class Main { public static void main(String[] args) { //创建窗体对象 JFrame...frame = new JFrame(); //创建窗体参数() frame.setBounds(10,10,900,720); //设置不允许更改大小...//frame.setResizable(false); //设置关闭方式 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...import java.io.IOException; import java.io.InputStream; import java.util.Random; //基本套路,继承JPanel,实现KeyListener..., ActionListener接口 public class Mpanel extends JPanel implements KeyListener, ActionListener {
; public class Game_Draw extends Canvas implements KeyListener{ final int unitSize = 30; // 小方块边长 int.../ 新出现块的起始列坐标 int[][] scrArr; // 屏幕数组 Game_Box b=new Game_Box(this); // 对方快的引用 Game_MyTimer time; // 画布类的构造方法...< rowNum; i++) for (int j = 0; j < columnNum; j++) scrArr[i][j] = 0; b.reset(); repaint(); } // 重新刷新画布方法...java.awt.TextField; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame...; import javax.swing.JLabel; import javax.swing.JPanel; public class Game_Layout extends JFrame { public
而接口适配器就是实现接口的抽象类,这样我们只需要继承这个接口适配器就能操作我们需要使用的方法了。 对于接口适配器,我们可能都见过。...在java.awt.event包中有许多适配器,比如监控键盘事件的接口KeyListener public interface KeyListener extends EventListener {...接口的适配器KeyAdapter public abstract class KeyAdapter implements KeyListener { /** * Invoked when...* Invoked when a key has been released. */ public void keyReleased(KeyEvent e) {} } 在jframe...2.举例说明你什么时候会用抽象类,什么时候更愿意使用接口? 3.谈一谈Java设计模式中的结构型模式 4.说一说你对适配器模式的理解? 5.说一说适配器模式使用场景?
一、Canvas 中绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...; // 创建 JFrame 窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮...关闭窗口并退出应用 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 2、获取并绘制图片 在 AWT 中 , 使用 Toolkit.getDefaultToolkit...#translate 对画布进行整体偏移 ; // 画布进行整体偏移 Graphics2D g2 = (Graphics2D)g; g2.translate...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new
java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.swing.JFrame...jFrameMain.add(gameBoard); } // 游戏面板需要对键值实现侦听, // 这里采用内部类来继承 JPanel 类, // 并实现接口 KeyListener...keyPressed 方法, // 方格是通过 @SuppressWarnings("serial") class GameBoard extends JPanel implements KeyListener...getFontMetrics(check.getCheckFont()); String value = String.valueOf(check.value); //使用此图形上下文的当前颜色绘制由指定迭代器给定的文本
| 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小...Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客中 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时 , 拖动的效果也随之缩放, 如 缩小画布后 , 移动鼠标..., 移动距离对应的缩放效果也随之缩小 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布中绘制的背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new
文章目录 一、使用鼠标滚轮放大缩小 Canvas 画布 - 要点分析 1、鼠标滚轮事件 2、核心代码示例 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 1、代码示例 2、效果展示 一、使用鼠标滚轮放大缩小...| 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 , 这里在上述基础上 , 新增鼠标滚轮缩放示例 ;...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new...frame.pack(); // 窗口设置可见 frame.setVisible(true); } } 2、效果展示 程序运行后默认效果 : 使用鼠标滚轮缩小画布
本项目结构如下: (1)游戏主界面显示模块: 显示游戏和帮助两个菜单; 游戏使用功能键盘,得分 等级; (2)画布、方块显示模块: 可以根据自己的需求来自己动手更改背景图片,在方块下落过程中,根据颜色的变化识别下落的方块...以下该游戏中类的设计: MyFrame类:继承自JFrame类,作为游戏的主类,负责对游戏的主体全局进行控制,连接与指挥各个类的枢纽。...游戏主界面采用Swing组件开发,并且向其注册监听器,以实现各种控制功能,综合游戏窗体的设计,其上至少需要注册三个监听器,分别是动作监听器(ActionListener)、键盘监听器(KeyListener...KeyAdapter类继承自Object类,实现KeyListener接口,用来接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。...使用ControlKeyListener可创建侦听器对象,然后使用组件的 addKeyListener 方法向该组件注册此侦听器对象。
---- 在游戏中相应的实现即主要窗体用Frame和JFrame来构建。...Graphics gre = image.getGraphics(); // 获取画布的底色并且使用这种颜色填充画布(默认的颜色为黑色) gre.setColor...这也就是JFrame本身的一种处理方法。 但是我们用JFrame编程并且重新update()实现双缓冲后,窗体一样狂闪不停!原因为何? 下面引用一张图来说明: ?...repaint()方法在重量级组件的时候会调用update方法,在轻量级组件的时候会调用paint方法 即JFrame根本不会去调用update()方法!...Graphics gre = image.getGraphics(); // 获取画布的底色并且使用这种颜色填充画布(默认的颜色为黑色) gre.setColor
import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...java.util.Random; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JFrame...import barrier.Iron; import barrier.SelfBorn; import barrier.Wall; public class TankWar implements KeyListener...{ static boolean TIMEOUT = false; private JFrame f; private JPanel gamePanel; private...mainF; private int style; public TankWar(String map, int tankMax, JFrame mainF, int style)
本文简介 点赞 + 关注 + 收藏 = 学会了 在 《Fabric.js 使用纯色遮挡画布(前景色)》 中讲到使用纯色的方式遮盖画布。...如果你的常见需要使用图片来遮盖的话,fabric.js 也提供了相应的属性来配置。 相比起使用纯色遮盖画布,使用图片会更复杂。 因为图片本身是有尺寸大小的,所以可能会遇到缩放画布、平移画布等操作。...使用图片覆盖画布 如果需要用图片遮盖画布,可以设置 canvas 的 overlayImage 属性,传入的值就是图片地址。 可以使用网图,也可以使用本地图片。...如果不希望覆盖图被缩放和平移等操作影响(不受视口变换的影响),可以将 overlayVpt 设为 false 。...: 这是可选项,不填也没事。
java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...import java.util.Arrays; import java.util.Random; public class GamePanel extends JPanel implements KeyListener...class RetroSnakeGame { public static void main(String[] args) { // 创建窗口 JFrame...frame = new JFrame("贪吃蛇"); // 固定窗口大小 frame.setResizable(false); // 设置窗口出现位置和大小...frame.setBounds(300,300,675,675); // 让窗口可关闭 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE
领取专属 10元无门槛券
手把手带您无忧上云