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

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

代码实现 创建窗口 首先创建一个游戏窗体类GameFrame,继承至JFrame,用来显示在屏幕上(window对象),每个游戏都有一个窗口,设置好窗口标题、尺寸、布局等就可以。...");//设置标题 setSize(526, 685);//设定尺寸 setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...=null){ myPlane.draw(g); } } 鼠标事件监听 加入监听是为了让飞机跟随鼠标移动,我这里定规则是第一次鼠标必须移动到飞机上,然后飞机才会跟随。...,保证飞机不出界,同时保证鼠标在飞机中间位置 //飞机跟随鼠标移动 public void move(int x,int y) { //判断范围,当横向移动在窗口范围内 if(x-width...移动就是开启线程让y坐标增加,没什么好讲,这里加一个飞机碰撞,就是当敌机跟我方飞机如何判断碰撞问题。 撞机分析(敌机与我机撞机) 从上面几个图可看出什么?

41710

Java图形化界面电脑管家界面

学会JavaSwing构建程序界面后,小伙伴们最大困惑可能是“为什么我们做出来界面那么丑、不跟市面流行程序界面一样呢?” 像这个界面,我们发现标题栏跟默认状态不一样,关闭按钮样式也变了。...下面的代码实现了无标题栏窗体,使用背景拉伸技术为处于上部分面板设置了背景图片;实现了关闭按钮鼠标经过以及鼠标单击事件;实现了鼠标拖拽新标题栏移动整个窗体功能。其他功能及特效大家可以自行实现。...private Point mousePressedPoint; //点击pnlTop面板时记录下鼠标坐标 public LoginFrame(){ setDefaultCloseOperation...(JFrame.DO_NOTHING_ON_CLOSE); //关闭窗体时什么也不做 setTitle("登录电脑管家"); //设置窗体标题 setSize(Constants.Width_LoginFrame...Point p = getLocation(); //设置窗体坐标:当前坐标+鼠标移动后的当前坐标-鼠标坐标 == 当前坐标+鼠标移动距离 setLocation((int)(p.getX()

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

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

(new MouseAdapter() { public void mousePressed(MouseEvent e) { // 记录鼠标按下时坐标..., 记录 移动后位置 与 当前 ( startX , startY ) 位置 差值 , 该差值累加到 ( startX , startY ) 坐标中 ; 计算一个 Canvas 画布偏移量...java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class LargeCanvas extends JPanel { // 鼠标按下时坐标...以及 更新后坐标 private int startX, startY; // 当前位置偏移 private int offsetX = 0, offsetY = 0;...public void mousePressed(MouseEvent e) { // 记录鼠标按下时坐标 startX = e.getX

1.4K20

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

一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效 ; 下面是设置键盘监听核心代码...】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动....*; public class LargeCanvas extends JPanel { // 鼠标按下时坐标 以及 更新后坐标 private int startX, startY...(MouseEvent e) { // 记录鼠标按下时坐标 startX = e.getX(); startY...H 标识放置在界面中心 ; 鼠标指针放在 H 位置 , 点击一次 , 按下数字键 9 , 放大 9 倍效果如下 :

1.8K20

Python中tkinter模块常用参数总结

4、组件放置和排版(pack,grid,place)pack组件设置位置属性参数: after:     组件置于其他组件之后; before:    组件置于其他组件之前...组件右上角y坐标; relx:  组件相对于窗口x坐标,应为0-1之间小数; rely: 组件相对于窗口y坐标,应为0-1之间小数; width...指定按钮上显示位图;borderwidth(bd)    指定按钮边框宽度;command:       指定按钮消息回调函数;cursor:     指定鼠标动到按钮上指针样式...;move    移动图像(1,4,0),1为图像对象,4为横4像素,0为纵像素,然后用root.update()刷新即可看到图像移动,为了使多次移动变得可视,最好加上time.sleep...指定消息框父组件;title 标题;type 类型;simpledialog模块参数:title 指定对话框标题;prompt

77430

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

1.0 设置鼠标滚轮监听 , 在 Canvas 组件中 , 调用 addMouseWheelListener 函数 , 添加 鼠标滚轮监听器 MouseWheelListener , 实现该监听器中...+ 鼠标滚轮缩放示例 ---- 在 【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移...java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; public class LargeCanvas extends JPanel { // 鼠标按下时坐标...以及 更新后坐标 private int startX, startY; // 当前位置偏移 private int offsetX = 0, offsetY = 0;...addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { // 记录鼠标按下时坐标

2.2K30

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

, y 坐标 , 同时可以计算出当前位置对应图片中 水平方向比例 和 垂直方向比例 ; 在缩放后图片中 , 只要保证鼠标指针指向相同 x, y 坐标时 , 该位置对应 水平方向比例 和..., 需要进行下面两个步骤操作 : 保存当前鼠标指针指向位置 , 以及鼠标指针指向位置对应图片中坐标位置比例 ; 鼠标指针指向位置不变 , 指向图片坐标比例不变 , 图片尺寸发生了改变 , 重新计算当前图片放置位置...记录鼠标指针指向界面中 Camvas 画布中坐标位置 ; pointer_ratio_x 和 pointer_ratio_y 记录鼠标指针指向位置对应图片中坐标位置比例 ; public..., 保存当前鼠标位置及比例 ; 在鼠标滚轮事件 MouseWheelEvent 中 , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 在 Canvas 画布坐标 ;...// 窗口设置可见 frame.setVisible(true); } } 2、执行效果 执行后 , 图像中船头 H 标识放置在界面中心 ; 鼠标指针放在

2.8K10

MFC控件编程之鼠标跟键盘消息

进行你操作 点击客户区 ? 在我们鼠标消息到来之前.它会先判断是客户区域还是非客户区域.然后进行转换.才给我们消息发送过来. 也就是说我们可以吧客户区转换为非客户区....API: 坐标转为窗口坐标. ::ScreenToClient(m_hWnd, &point); 四丶捕获鼠标 捕获鼠标也很常用. 比如我们鼠标按下画线.时候....鼠标会移动到窗口外边.那这样的话画线就不会成功了. 实现思路:   1.鼠标点击.保存一下坐标   2.鼠标抬起. 创建CClientDc....使用MoveTo移动到保存鼠标位置.   3.使用dc画线.画出新位置....遇到问题.当我们鼠标动到窗口外面之后.就不会画线了.所以我们要捕获鼠标.

1.5K30

虚拟化平台上远程连接遇到几个问题分析

如果鼠标从point1(x1,y1)移动到point2(x2,y2),如果画图响应很快,那么在显示器上看到鼠标就移动到对应位置上,如果画图很慢,就会看到鼠标是一顿一顿动到位置上。...3,鼠标速不一致 在vnc上,是一个常见问题。可以看到虚拟机里面的鼠标和外面物理机上鼠标的位置不一致,而且它们速不一致。在外面移动了很大一段距离,在虚拟机里面只是移动了一小段。...在物理机上,和虚拟机里面,它们分标率不一样,vnc客户端在计算鼠标的移动距离时候,计算了比例,导致出来了速不一致问题。...算下来,整个路径还是挺长。而且没有太多改进空间。物理机上鼠标已经移动到了新位置,但是web上内容需要经过这么长路径才能更新出来。所以就看到了鼠标拖影。...后来想到了一投机办法,在物理机上,把鼠标设置成只有1pixel点,那么就看不到物理机上鼠标。尽管web上内容更新慢了一点,但是用户无感知。 后记: Good luck~

6K80

GUI组件添加、布局设置

添加标签组件: 先构建一个窗口对象,使用setLayout();方法把布局设置为null,用setBounds();方法窗口位置坐标设置好,记得setVisibel();显示窗口方法尽量写在代码最后面一句...准备好窗口后,就可以使用JLabel来new出一个标签对象,像构建窗口一样使用setBounds把标签显示位置坐标设置好,再使用窗口对象访问add();方法把标签组件添加到窗口上: ?...显示出来就是没有边框窗口 使窗口不能伸缩:   setResizable();方法,写false就是令窗口不能伸缩, 尺寸定死,true则反之: ? 运行效果: ?...设置窗口对象默认关闭方式: setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 直接关闭虚拟机 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE...); 隐藏关闭,对象不会销毁 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 销毁对象关闭 窗口标题:    setTitle();方法,可以设置窗口标题

1.1K20

Java小程序祝国庆快乐祝大家国庆节快乐

祝大家国庆节快乐 上面是用javaJFrame为基础实现效果,下面用面向对象思考分析并实现此效果: 1)找对象 最开始鼠标点击冲出来白色圆点 Bullet 白色圆点爆炸成一片(包含很多小圆点...)Piece 主程序类 Guoqing 继承于 JPanel 程序初始化类执行类GuoqingStart 继承于JFrame 2) 类设计, 定义出 类属性(数据模型) 比如 白色圆点类Bullet...|-- int x x坐标 |-- int y y坐标 3) 界面绘制(利用Java Swing API 绘制界面) 4) 功能算法设计 原则: 一切功能 都是方法: 动词就是方法...实现策略: 功能映射到数学模型, 研究数据变化规律 比如白色圆点类Bullet与*Piece中各个小圆点移动,其实都是坐标位置变化 5) 事件绑定(利用Java Swing API...实现事件绑定) 比如鼠标点击监听事件 6)完整代码 import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing

50210

最新Python大数据之Excel进阶

,可以对它进行删除/添加/修改位置等操作 •可以通过菜单操作,也可以通过鼠标拖动选择 除了饼图和圆环图外,其它标准图图表一般至少有两个坐标轴 新创建图表默认没有坐标标题,添加坐标标题可以使坐标轴意义更加明确...•通过图表设计选项卡 —> 添加图表元素 —> 坐标标题选项 可以设置坐标标题 添加数据标签 1.数据标签是指图表中显示图标有关信息数据。...格式化图表 保证图表完整性 一个完整图表必须包含以下基本元素:图表标题、数据系列、图例、坐标轴、数据单位 格式化图表区/绘图区 图表区格式设置主要包括字体、背景填充、边框、大小、属性等 格式化图表标题...、坐标标题、图例 图表标题坐标标题和图例设置比较简单,一般包括字体、边框、对齐方式、位置等设置 格式化坐标坐标轴包括分类轴和数值轴,设置项目包括字体,线条,填充,对齐方式,坐标轴选项等...如下面两张图所示,左图从字段列表中选中字段,往下拖动,拖动到如右图所示区域,再松开鼠标,就完成了字段添加。 字段设置 其次,添加到下方字段,可以通过拖拽方式进行调整。

22450

Python3中tkinter模块使用方法详解

4、组件放置和排版(pack,grid,place)  pack组件设置位置属性参数:     after:        组件置于其他组件之后;     before:       组件置于其他组件之前...:      组件行宽; place组件可以直接使用坐标来放置组件,参数有:     anchor:       组件对齐方式;     x:            组件左上角x坐标;     y:...             组件右上角y坐标;     relx:          组件相对于窗口x坐标,应为0-1之间小数;     rely:           组件相对于窗口y坐标,应为...command:          指定按钮消息回调函数;     cursor:            指定鼠标动到按钮上指针样式;     font:               指定按钮上文本字体...修改图形属性,第一个参数为图形ID,后边为想修改参数;     move               移动图像(1,4,0),1为图像对象,4为横4像素,0为纵像素,然后用root.update

4.4K21

Reactor深度探索 顶

而在线程执行完毕后会执行一个done()方法,结果放入BlockingQueue中。...V> poll() { return completionQueue.poll(); } Future结果从BlockingQueue队列中弹出。...归纳 Callbacks是解决非阻塞方案,然后它们之间很难组合,并且快速地代码引导至"Callback Hell"不归路 Futures相对于Callbacks好一点,不过还是无法组合,不过ComletableFuture...当我们在窗体内用鼠标点击时候会打印如下内容 [线程 : AWT-EventQueue-0] 鼠标点击,坐标(X : 218,Y : 167) [线程 : AWT-EventQueue-0] 鼠标点击...,坐标(X : 130,Y : 120) 由打印内容可知,我们鼠标点击并不是main主线程来执行,说明它是一个异步Callback,而且是非阻塞,当我们点击鼠标产生鼠标事件时,没有任何线程会阻塞该线程执行

90310
领券