, 通过 MouseWheelEvent 对象 , 获取鼠标滚轮的滑动方向 , 向上滑动时 , 放大画布 , 画布增加 10% ; 向下滑动时 , 缩小画布 , 画布缩小 10% ; 一旦 scale...【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像..., 可以使用鼠标拖动 , 这里在上述基础上 , 新增鼠标滚轮缩放示例 ; 1、代码示例 代码示例 : import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter...; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener...// 鼠标拖动事件 public void mouseDragged(MouseEvent e) { // 统计本次鼠标移动的相对值
一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程的应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效的 ; 下面是设置键盘监听的核心代码...【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像..., 可以使用鼠标拖动 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客中 , 新增鼠标滚轮缩放画布示例..., 但是使用鼠标拖动时 , 拖动的效果也随之缩放, 如 缩小画布后 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布中绘制的背景图像....*; import java.awt.event.*; public class LargeCanvas extends JPanel { // 鼠标按下时的坐标 以及 更新后的坐标
一、AWT 绘图线程 在 AWT 绘图程序中 , 有一个专门的线程用于绘制界面的线程 , AWT 绘制线程 ; AWT 绘制线程 , 默认处于 等待状态 ; 当组件 第一次显示时 , 会 调用 paint...绘制线程 中 调用 repaint() 函数 , 重绘组件 ; 在 repaint() 函数 中 , 先将组件进行隐藏 , 然后再 调用 update(Graphics g) 函数刷新组件 ; 在调用...* 出于性能原因,宽度或高度为零的Component * 在第一次显示时不认为需要粉刷,也不认为需要修复。.../java/painting-140037.html">在AWT和Swing中绘画。.../technetwork/java/painting-140037.html">在AWT和Swing中绘画。
startX = e.getX(); startY = e.getY(); } }); 鼠标移动时...offsetX += dx; offsetY += dy; // 重新绘图 repaint..., 画布偏移为 0 , 但是 在鼠标不断拖动的过程中 , 偏移量 ( offsetX , offsetY ) 一直在累加 , 每次累加 , 都要重绘画布 , 重绘时 , 调用 Graphics2D#translate...Graphics2D)g; g2.translate(offsetX, offsetY); 二、代码示例 ---- 代码示例 : import javax.swing.*; import java.awt....*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class LargeCanvas extends
.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent....*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent....*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent....*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent....*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent
java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Graphics; import...java.awt.Graphics2D; import java.awt.Shape; import java.awt.image.BufferedImage; import java.io.BufferedWriter...; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionListener; import java.awt.BorderLayout...java.awt.Toolkit; import java.awt.Cursor; import java.awt.Point; public class DrawPictureFRame extends...(); } public void mouseMoved(final MouseEvent event){//当鼠标移动时 if(rubber){ Toolkit toolkit
, 如果在循环中 持续调用 Canvas#repaint() 函数刷新界面 , 代码如下 : import java.awt.*; public class HelloAWT { public...界面中一直在闪烁 ; 每次刷新都闪烁一次 ; 参考 【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ① ( AWT 绘图线程 | Component 绘图函数 )...函数时 , 会先将屏幕清空 , 然后再重新调用 Canvas#paint 函数进行绘制 , 此时就造成了界面闪烁的现象 ; 为了避免上述闪烁的情况 , 也就是绘制过程中 , 不出现 屏幕清空 的情况...; 这里 引入 双缓冲 机制 , 建立一个 图片缓冲区 , 用于缓存图片 , 绘制时绘制到图片缓冲区 , 绘制完毕后再将整张图片绘制到界面中 , 这样界面中就不会出现 清空的情况 , 始终都有内容显示...将缓冲区中的图片绘制到窗口界面中 g.drawImage(mBufferedImage, 0, 0, null); } 二、完整代码示例 ---- 代码示例 : import java.awt
.*; import java.awt.*; import java.awt.event.*; public class test extends Applet implements ActionListener...(); } } */ // applet的文本框textField与文本区textArea演示 /* import java.applet.*; import java.awt.*; import...java.awt.event.*; public class test extends Applet implements ActionListener,TextListener{ TextArea...\n"); repaint(); } } */ // Appl的单选框与列表demo /* import java.applet.*; import java.awt...,缩放,和关闭,通常作为一个容器组件被加到其他容器中 /* import java.applet.*; import java.awt.*; import java.awt.event.*; public
绘图 很多程序如各种小游戏都需要在窗口中绘制各种图形,除此之外,即使在开发JavaEE项目时,有时候也必须"动态"地向客户 端生成各种图形、图表,比如 图形验证码、统计图等,这都需要利用AWT的绘图功能...在AWT中,真正提供绘图功能的是Graphics对象,那么Component组件和Graphics对象存在什么关系,才能让Component绘制自身图形呢?...; repaint():调用update方法,刷新组件外观; 一般情况下,update和paint方法是由AWT系统负责调用,如果程序要希望系统重新绘制组件,可以调用repaint方法完成。...Graphics类的使用 实际生活中如果需要画图,首先我们得准备一张纸,然后在拿一支画笔,配和一些颜色,就可以在纸上画出来各种各样的图形,例如圆圈、矩形等等。...绘图API,完成下图效果 演示代码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener
界面和交互 AWT事件模型 如果一个人玩橡棋就像一个人玩游戏时没有交互一样,会非常无聊,所以玩家最大的乐趣就是与电脑或者人的交互。...在以上代码中,我们Robot类移动鼠标,但是鼠标移动事件可能不会立即出现,所以代码会检查鼠标移动事件是否定位在屏幕中央。...对于鼠标的样子,我们可以使用Java API创建自己的样式,创建时需要使用Toolkit类的createCustomerCursor()方法来实现 在游戏中我们可以呼叫Toolkit类截取一个不可见的光标...使用输入管理器 下面,我们创建一个hero可以左右移动,以及跳跃的行为;另外我们可以该应用程序添加暂停功能,不过这不是一个真正的游戏。 其中,在人物跳跃时需要表现重力—人物会回到地面的感觉。...而现在我们必须手动关闭这个功能,从而达到控制组件的呈现时机,比如按一个按钮时,我们让该按钮呈现被按下的样子,该组件需要呼叫repaint()方法来重绘组件的样子。
二、Swing界面编程 随着Java的发展,AWT已经渐渐被淘汰,它已经不能适应发展的需要,不能满足开发功能强大的用户界面的需要。...这时Swing出现了,它是建立在AWT之上的组件集,在不同的平台上都能保持组件的界面样式,因此得到了非常广泛的应用。...1.Frame:重量级组件 2.JFrame:轻量级组件 出现问题: ①.窗体调用repaint()方法时闪烁严重 ②.窗体设置双缓冲重绘后,DrawImage()进行缩放图片时会失真,Graphics2D...---- 在Awt中对于窗体画布的重绘其条用顺序是repaint() —>update()—>paint(); 默认的upadate()中自带clearRect()方法,即清屏功能,程序运行时我们调用repaint...repaint()方法在重量级组件的时候会调用update方法,在轻量级组件的时候会调用paint方法 即JFrame根本不会去调用update()方法!
在本文中,我将向你展示如何利用Java Swing技术,以及一些简单的代码,让彩色气球在屏幕上飘舞起来。这种视觉效果不仅适合儿童节,也可以为你的应用程序增添一份活力和趣味。...为了解决这些问题,Sun公司在1997年推出了JFC(Java Foundation Classes),其中包含了一个新的图形用户界面技术——Swing。...Swing最初是作为一个可选的扩展包提供的,后来在1998年被集成到了Java 2平台中,并成为了Java标准图形用户界面技术。...布局是指Swing组件在容器中的排列方式,如水平对齐、垂直对齐等,它们都实现了java.awt.LayoutManager接口,并提供了一些常用的布局管理器,如流式布局、网格布局等。...java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.GeneralPath;
; 使用鼠标滚轮缩放后 , 在 Canvas 中绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布中的 x...垂直方向的比例 仍然保持不变 , 那就需要移动图片的位置 ; 如果放大图片就需要将图片往左上方移动 ; 如果缩小图片就需要将图片往右下方移动 ; 此时可以分析出 , 如果要实现 鼠标滚轮缩放的中心点设置为当前鼠标中心点...canvasY); } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 1、代码示例 import javax.swing.*; import java.awt....*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent...; import java.awt.event.MouseWheelListener; public class LargeCanvas extends JPanel { // 鼠标按下时的坐标
import java.awt.*; import java.awt.event.*; public class TestActionEvent { public static void main...(); } } 这是一个画点的程序,鼠标在Frame上点击一下就会在当前位置点出一个点,需要注意的是,repaint方法的执行过程可以理解为:update()->paint(),首先更新,然后画点...,所以repaint方法在画图的时候必须加上 ?...import java.awt.*; import java.awt.event.*; public class WindowsClose { public static void main(String...import java.awt.*; import java.awt.event.*; public class TestKey { public static void main(String
{ } Jetbrains全家桶1年46,售后保障稳定 MyPanel类 构造方法 package Demo; import java.awt.Color; import java.awt.Component...; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener...; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random; import...---- 总结 本游戏的设计思路类似于游戏“贪吃蛇大作战”,程序在一些功能的实现上还存在许多不足,但该项目的实现对Java新手的实战能力有很大的提升。...在使用Java编写该项目时遇到了很多问题,在解决问题时,可以对java的面向对象编程有更加深入的理解和认识。 ---- 本项目在一定程度上还有缺陷,仅用于初学者学习,欢迎各位指正。
GamePanel:游戏控制面板 package com.xdr630.snake; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent...; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener...isStart; } repaint(); } //键盘控制走向 if (keyCode == KeyEvent.VK_LEFT...0]+25; if (snakeY[0]>650) snakeY[0] = 75; } //吃食物:当蛇的头和食物一样时,...实现效果 完成后也可打成 jar 包,使用终端执行 java -jar xxx.jar 运行,效果和idea运行效果一样,方便移动。
Data.food = food; } } 游戏面板类 package com.tang.retor_snaker; import javax.swing.*; import java.awt....*; import 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...,当蛇在往上走,那么就不能立刻往下走 if (e.getKeyCode() == KeyEvent.VK_UP) { snakeHead = snakeHead.equals...isVictory) { // 身体移动:右移:即让后一个移到前一个的位置即可!
介绍-快速入门 绘图原理 在面板上画一个小圆。 Component类提供了两个和绘图相关最重要的方法:1. paint(Graphics g)绘制组件的外观 repaint()刷新组件的外观。...当事件发生时,产生事件的对象,会把此"信息”传递给"事件的监听者"处理,这里所说的“信息"实际上就是java.awt.event事件类库里某个类所创建的对象,把它称为"事件的对象"。...(3)事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现多个监听接口 (4)这些接口在java.awt.event包和javax.swing.event包中定义。...坦克动起来 现在我们学习java事件处理机制和java绘图技术,请试试看如何让你的坦克可以通过按键控制上右下左(wdsa表示)的移动。....*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Vector; /**
com.company; import javax.imageio.ImageIO; import javax.sound.sampled.*; import javax.swing.*; import java.awt....*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent...; import java.awt.event.KeyListener; import java.io.BufferedInputStream; import java.io.IOException;...未开始和暂停则不播放背景音乐 else { bgm.stop(); } //重新绘图 repaint...isFailed = true; } } //重新绘图 repaint
第三步:实现动画,让小球沿水平方向移动并做边界检测。 第四步:实现小球沿着任意角度飞行。 第一步:创建项目和窗口。...图片图片如下: 然后在src下新建类BallGame.java,项目结构如下: 第一步:创建项目和窗口代码如下: package 桌面游戏; import javax.swing.JFrame....*; import java.awt.Toolkit; import javax.swing.JFrame; public class BallGame2 extends JFrame{....*; import java.awt.Toolkit; import javax.swing.JFrame; public class BallGame3 extends JFrame{....*; import java.awt.Toolkit; import javax.swing.JFrame; public class BallGame4 extends JFrame{
领取专属 10元无门槛券
手把手带您无忧上云