首页
学习
活动
专区
工具
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坐标增加,没什么好讲的,这里加一个飞机碰撞,就是当敌机跟我方飞机如何判断碰撞的问题。 撞机分析(敌机与我机的撞机) 从上面几个图可看出什么?

45910

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

    12.6事件处理

    例如,在用户界面上有一个按钮,当用户将鼠标移动到按钮上并单击时,就触发了一个“按钮单击”事件,然后由该命令按钮中的代码来完成相应的操作。因此,事件处理技术是用户界面程序设计中一项重要的技术。...事件:当用户在界面上执行一个操作,如按下键盘、单击或移动鼠标对窗口中的组件进行交互时所发生的事情。事件可以由外部用户操作触发,如单击按钮、单击鼠标等。事件也可以由操作系统触发,如时钟计数器等。...这种事件模型是将事件源(如按钮)和对事件做出的具体处理分离开来。...例12-22运行结果例12-22运行结果 程序运行之后,将显示标题为“事件处理程序”的窗口,其中包含了一个按钮,该按钮注册了一个响应ActionEvent的监听器,即ButtonHandler类的对象。...JFrame是一种带标题栏并且可以改变大小的窗口;JPanel类与窗口类似,但它是一种没有标题栏的容器,且不能独立存在,必须包含在另外一个容器。

    13110

    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

    87330

    【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.3K30

    【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

    java.awt.swing菜单组件

    弹出式菜单也称为快捷菜单,它是相当于某个指定组件的,当该组件受到鼠标单击时,会弹出一个菜单,这个菜单就是弹出式菜单。弹出式菜单的结构比较简单,最多只有二级菜单。...item) 将某个菜单项追加到此菜单的末尾。...例12-14中,先创建了JFrame窗体,然后创建菜单、菜单项,在“退出”的菜单项中添加事件监听,点击“退出”窗体就会关闭,最后为JFrame窗体添加鼠标点击事件监听器,实现右键弹出菜单的效果。...,还需要传入一个一维数据作为列标题,接下来通过一个案例来演示JTable类的使用,如例12-15所示。...例12-15运行结果 图12.17中,程序运行先创建了JFrame窗体,然后定义了表格标题和数据的两个数组,最后创建JTable时将两个数组以参数传入,利用JTable类成功展现了一个表格。

    13910

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

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

    1.6K30

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

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

    6.3K80

    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.2K20

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

    祝大家国庆节快乐 上面是用java的JFrame为基础实现的效果,下面用面向对象的思考分析并实现此效果: 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

    52010

    最新Python大数据之Excel进阶

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

    26250

    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.5K21

    Java编程之GUI教程 JPanel面板和JScrollPane

    与顶层容器不同的是,面板不能独立存在,必须被添加到其他容器内部。在进行界面设计时,通常将用户界面划分成若干个区域,每个区域用一个面板。这样处理的好处是:将窗口内容结构化,有利于管理、更换、调试。...Jpanel public void setLocation(int x,int y) 设置组件显示位置的左上角坐标为(x,y) public void setSize(int width,int height...Demo1203.java 1import javax.swing.*; 2import javax.swing.border.*; // 导入标题边框需要的包...例12-3运行结果 图12.5中,运行程序结果,先创建了JFrame窗体,然后设置布局,创建一个容器JPanel,最后将中间容器添加进JFrame窗体。...在第14行代码,通过“new TitleBorder("面板区域");”设置了JPanel的边框和标题。 JScrollPane是一个带滚动条的面板容器,只能放置一个组件,并且不能使用布局管理器。

    17310

    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,而且是非阻塞的,当我们点击鼠标产生鼠标事件时,没有任何线程会阻塞该线程的执行

    91110
    领券