首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 )

一、Canvas 中绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...; // 创建 JFrame 窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮...关闭窗口并退出应用 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 2、获取并绘制图片 在 AWT 中 , 使用 Toolkit.getDefaultToolkit...+= dy; } }); 4、画布偏移 初始时 , 画布偏移为 0 , 但是 在鼠标不断拖动的过程中 , 偏移量 ( offsetX , offsetY ) 一在累加...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用

1.3K20

【错误记录】Java AWT 图形界面编程设置键盘事件没有响应 ( 设置键盘事件 | 键盘事件必须设置到 Frame JFrame 对象 )

一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布中绘制的图像根据按下的数值进行缩放 ; 在 AWT 自定义 Canvas 组件中 , 添加按键事件 , 下面定义的...} } }); 出现问题的博客代码 : 【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像...( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ) ; 二、解决方案 ---- 鼠标事件 , 可以添加到具体的 Component 组件..., 但是凡是涉及到 键盘 的事件 , 必须添加到顶级组件 , 也就是窗口组件 , 如 : Frame / JFrame 组件 , 才能生效 ; 否则就会出现上述情况 , 为 组件设置的 KeyAdapter..., 即可实现想要的功能 ; JFrame.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e

50120
您找到你想要的搜索结果了吗?
是的
没有找到

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程的应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效的 ; 下面是设置键盘监听的核心代码...-- 在 【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中...本博客中实现的案例 , 在上面的基础 , 添加了鼠标滚轮缩放的中心点设置为当前鼠标中心点 ; 1、代码示例 import javax.swing.*; import java.awt.*; import...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new

1.8K20

【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

} } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 ---- 在 【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭...| 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 , 这里在上述基础 , 新增鼠标滚轮缩放示例 ; 1、代码示例 代码示例 : import...g2.drawImage(image, 0, 0, this); } public static void main(String[] args) { // 创建 JFrame...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new

2.2K30

Data Structure_JavaSwing

JFrame是最上层的一个窗口,如果要绘制的话是不可以在窗口本身绘制的。MenuBar就是最大化最小化关闭等等的操作。...Content Pane其实是一个容器,可以装载其他的组件,最常用的就是面板,Jpanel就是一个面板,后面的绘制都会画在Jpanel。也就是说想要画上东西就需要在Jframe加入Jpanel。...绘制 在Jpanel类里面有一个paintComponent方法,这个方法是自带的一个方法,需要绘制的操作都要在这里面画。paintComponent带了一个画笔参数。...cirle); //g.drawOval(50, 50, 300, 300); } } 如果想要设置颜色,就可以直接调用setColor即可,而这个条件会一持续要后面结束为止...在我们视觉就会看到闪烁了一下,有一个经典的解决方法,就是用双缓存,也就是两个画布,用画布的切换来演示动画的运行。

52530

双缓冲原理在Awt和Swing中实现消除闪烁方法总结

---- 在游戏中相应的实现即主要窗体用Frame和JFrame来构建。...设置抗锯齿属性也会失效 Ps:问题到目前为止还没有很好的处理,可能相应的用JPanel进行绘制会解决问题(暂未尝试!)...update()—>paint(); 默认的upadate()中自带clearRect()方法,即清屏功能,程序运行时我们调用repaint()方法刷新则会造成屏幕刚清空,又继续重新调用paint()方法往窗体绘制...,重绘函数只需要在截图的画布绘制即可,不必在从底层绘制      paint(gre); //将接下来的图片加载到窗体画布上去,才能考到每次画的效果   g.drawImage...这也就是JFrame本身的一种处理方法。 但是我们用JFrame编程并且重新update()实现双缓冲后,窗体一样狂闪不停!原因为何? 下面引用一张图来说明: ?

2.1K20

老Java程序员花一天时间写了个飞机大战,很舒服!

代码实现 创建窗口 首先创建一个游戏窗体类GameFrame,继承至JFrame,用来显示在屏幕(window的对象),每个游戏都有一个窗口,设置好窗口标题、尺寸、布局等就可以。.../* * 游戏窗体类 */ public class GameFrame extends JFrame { public GameFrame() { setTitle("飞机大战...不允许修改界面大小 } } 创建面板容器GamePanel继承至JPanel package main; import java.awt.Graphics; import javax.swing.JFrame... jmi1.addActionListener(this); jmi1.setActionCommand("Restart"); jmi2.addActionListener(this); jmi2...创建我方飞机 创建MyPlane类,属性有坐标x、y,宽高、图片、是否存活、是否可以移动等;方法主要有绘制、移动、射击等。

40110

贪吃蛇大作战java代码_java做贪吃蛇需要用到哪些知识

-- 效果展示 ---- 目录 效果展示 一、游戏界面 二、得分情况 项目介绍 项目背景 总体需求 实现过程 代码展示 主类 :Demo类 MyPanel类 ①构造方法 ②初始化方法 ③绘制方法...实现过程 (1)绘制窗体对象。 (2)静态UI设计(包括小蛇,食物,游戏区域和标题区域)。 (3)使用键盘监听事件和定时器实现小蛇的移动。 (4)小蛇与食物碰撞的实现。...KeyEvent arg0) { // TODO Auto-generated method stub } } 框架Ui类 package Demo; import javax.swing.JFrame...; public class Ui { public static void main(String[] args){ JFrame frame=new JFrame("无尽版贪吃蛇");...---- 总结 本游戏的设计思路类似于游戏“贪吃蛇大作战”,程序在一些功能的实现还存在许多不足,但该项目的实现对Java新手的实战能力有很大的提升。

86820

第30篇:swing组件添加javafx的webview浏览器组件方法

Part1 前言 Swing是一个用于开发java图形界面程序的工具包,一用着挺顺手的,美中不足就是没有好用的浏览器组件,只能引用第三方jar包,比如说JxBrowser、DJ Native Swing...有一个很形象的比喻,JFrame是一张桌子,各个组件是一盘又一盘的菜,而JPanel就是一个托盘,装了选好的菜品(组件)后放到JFrame桌子。...Swing添加Javafx的webview组件 Netbeans没法拖拽JFXPanel,那么我们可以这样,在JFrame先放一个JPanel,然后手动敲代码在JPanel添加一个JFXPanel,...JFXPanel放一个scene场景,在其上面放一个Javafx的webview组件,具体看如下操作: JFrame-->JPanel-->JFXPanel-->scene-->webview,需要手写的代码量很少...至此一困扰我的swing浏览器组件编写问题完美解决! 专注于网络安全技术分享,包括红队、蓝队溯源、渗透测试、代码审计等 每周一篇,99%原创,敬请关注

2.4K40

Java游戏编程不完全详解-2(1万6千字吐血推荐)

独占模型意味着:(1)Windows无法重叠全屏幕窗口,因此 //当已存在全屏幕窗口时,再调用此方法会导致现面的全屏幕窗口返回窗口化模型!...该类封装了 Java支持的基本呈现操作所需要的状态信息: 1、需要在其绘制的Component对象 2、呈现和剪贴坐标的转换原点 3、当前的剪贴区 4、当前的颜色...绘制图形轮廓的操作是通过使用像素大小的画笔 遍历像素间无限细分路径的操作,画笔从路径的锚点向下和向右绘制,填充图形的操作是填充图形 内部区域无限细分路径操作。...(JFrame对象)。...如果,这样做,那么这个怪物在不同的机器移动的速度就会不一样!性能好的机器的怪物运行比较快,而性能慢的机器的怪物运行比较慢。而怪物的动画我们使用主动呈现的技术来实现。

1.4K30

漫谈可视化Prefuse(四)---被玩坏的Prefuse API

Prefuse API中主要解读的是prefuse.data包中的主要接口,并利用《漫谈可视化Prefuse(一)---从SQL Server数据库读取数据》中例子,将参数配置模块剥离出来,实现界面传值,绘制图形...jf = new JFrame(); 53 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 54 jf.add(display...图形展示效果如下: 121950592129282.jpg   Demo2:打破输入输出流的垄断亲自绘制图形——Graph的使用 之前几篇介绍的例子主要依赖于prefuse.io中的读入写出操作类进行数据的导入...InGroupPredicate("graph.edges"), edgeRenderer); 这里采用EdgeRenderer边渲染器,将边渲染为曲线,并统一应用到组“graph.edges”中的元素,...拿Demo2中的图形来说,处在中间的节点可以不收节点控制(无法拖拽,不能交互),人家兄弟姐妹多,就拿那些势力若的边缘小弟拖过来拽过去^_^。

79550
领券