一、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"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用
一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布中绘制的图像根据按下的数值进行缩放 ; 在 AWT 自定义 Canvas 组件中 , 添加按键事件 , 下面定义的...} } }); 出现问题的博客代码 : 【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像...( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ) ; 二、解决方案 ---- 鼠标事件 , 可以添加到具体的 Component 组件上..., 但是凡是涉及到 键盘 的事件 , 必须添加到顶级组件 , 也就是窗口组件上 , 如 : Frame / JFrame 组件上 , 才能生效 ; 否则就会出现上述情况 , 为 组件设置的 KeyAdapter..., 即可实现想要的功能 ; JFrame.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e
Java Swing的基础 首先需要注意的就是JFrame这个类,如果在main类整直接new一个出来是没有任何的变化,需要设置一个setvisible为true来显示出来。...public class AlgorFrame extends JFrame { private int canvasWith; private int canvasHeight;...JFrame是最上层的一个窗口,如果要绘制的话是不可以在窗口本身绘制的。MenuBar就是最大化最小化关闭等等的操作。...Content Pane其实是一个容器,可以装载其他的组件,最常用的就是面板,Jpanel就是一个面板,后面的绘制都会画在Jpanel上。也就是说想要画上东西就需要在Jframe上加入Jpanel。...绘制 在Jpanel类里面有一个paintComponent方法,这个方法
一、键盘按键监听 - 要点分析 ---- 如果要为 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
} } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 ---- 在 【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
JFrame是最上层的一个窗口,如果要绘制的话是不可以在窗口本身绘制的。MenuBar就是最大化最小化关闭等等的操作。...Content Pane其实是一个容器,可以装载其他的组件,最常用的就是面板,Jpanel就是一个面板,后面的绘制都会画在Jpanel上。也就是说想要画上东西就需要在Jframe上加入Jpanel。...绘制 在Jpanel类里面有一个paintComponent方法,这个方法是自带的一个方法,需要绘制的操作都要在这里面画。paintComponent带了一个画笔参数。...cirle); //g.drawOval(50, 50, 300, 300); } } 如果想要设置颜色,就可以直接调用setColor即可,而这个条件会一直持续要后面结束为止...在我们视觉上就会看到闪烁了一下,有一个经典的解决方法,就是用双缓存,也就是两个画布,用画布的切换来演示动画的运行。
---- 在游戏中相应的实现即主要窗体用Frame和JFrame来构建。...设置抗锯齿属性也会失效 Ps:问题到目前为止还没有很好的处理,可能相应的用JPanel进行绘制会解决问题(暂未尝试!)...update()—>paint(); 默认的upadate()中自带clearRect()方法,即清屏功能,程序运行时我们调用repaint()方法刷新则会造成屏幕刚清空,又继续重新调用paint()方法往窗体上绘制...,重绘函数只需要在截图的画布上绘制即可,不必在从底层绘制 paint(gre); //将接下来的图片加载到窗体画布上去,才能考到每次画的效果 g.drawImage...这也就是JFrame本身的一种处理方法。 但是我们用JFrame编程并且重新update()实现双缓冲后,窗体一样狂闪不停!原因为何? 下面引用一张图来说明: ?
展示爱心前,可以先复制love链接在浏览器打开,就会有下面图片展示哦!...接下来是爱心代码及展示效果 代码展示: import javax.swing.*; import java.awt.*; public class heart extends JFrame {...this.setBackground(Color.BLACK); // 设置窗口关闭方式 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...4; //设置画笔颜色 drawOffScreen.setColor(Color.PINK); // 绘制椭圆
2021/2/23 9:35 */ public class StartGames { public static void main(String[] args) { // 1.绘制一个静态窗口...JFrame JFrame jFrame = new JFrame("兮动人-贪吃蛇小游戏"); // 设置界面大小 jFrame.setBounds(...jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 2....面板 JPanel 可以加入到JFrame jFrame.add(new GamePanel()); // 让窗口能够展现出来 jFrame.setVisible...蛇的坐标 X int[] snakeX = new int[600]; //蛇的坐标 Y int[] snakeY = new int[500]; // R:右,L:左,U:上,
计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480 000个像素。...像素是一个密度单位,而厘米是长度单位,两者无法比较。 介绍-快速入门 绘图原理 在面板上画一个小圆。...Component类提供了两个和绘图相关最重要的方法:1. paint(Graphics g)绘制组件的外观 repaint()刷新组件的外观。...当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。...//g.drawOval(10, 10, 100, 100); //演示绘制不同的图形..
设置之后窗口就会一直在其他窗口的上面显示 去除窗口边框: setUndecorated();方法,写true就是除去窗口的边框, false则反之: ? 运行效果: ?...设置窗口对象的默认关闭方式: setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 直接关闭虚拟机 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE...); 隐藏关闭,对象不会销毁 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 销毁对象关闭 窗口标题: setTitle();方法,可以设置窗口的标题...流式布局里的组件会随着窗口的拉动而改变 卡片布局: CardLayout是卡片布局对象,可以直接在setLayout();方法里new这个卡片布局对象,就可以实现流式布局了: ?
--------------------------------------------- addSelectionInterval(int anchor, int lead):在已经选中列表项的基础上,...DefaultListModelTest().init(); } } 使用ListCellRenderer改变列表外观 前面程序中的 JList 和 JComboBox 采用的都是简单的字符串列表项, 实际上...super E> cellRenderer)方法,把自定义的ListCellRenderer对象传递给JList,就可以按照自定义的规则绘制列表项组件了。....*; public class ListCellRendererTest { private JFrame mainWin = new JFrame("好友列表"); private...private Color background; //定义绘制单元格的前景色 private Color foreground;
代码实现 创建窗口 首先创建一个游戏窗体类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,宽高、图片、是否存活、是否可以移动等;方法主要有绘制、移动、射击等。
; import java.awt.Container; import java.awt.Graphics; import javax.swing.Icon; import javax.swing.JFrame...jf=new JFrame();//创建一个JFrame窗口 Container container=jf.getContentPane();//将窗口转换为容器 container.setBackground...import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon; /** * 1:Swing中的图标除了可以绘制以外...* 调用setImage(Image image)方法来操作 * 第二直接从图片源创建图表 * 第三除了可以直接从图片源创建图表之外,还可以为这个图标添加简短的描述 * 第四利用位于计算机网络上的图像文件创建图标...JFrame jf=new JFrame();//创建一个窗体 Container container=jf.getContentPane();//将窗体转化为容器
-- 效果展示 ---- 目录 效果展示 一、游戏界面 二、得分情况 项目介绍 项目背景 总体需求 实现过程 代码展示 主类 :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新手的实战能力有很大的提升。
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%原创,敬请关注
独占模型意味着:(1)Windows无法重叠全屏幕窗口,因此 //当已存在全屏幕窗口时,再调用此方法会导致现面的全屏幕窗口返回窗口化模型!...该类封装了 Java支持的基本呈现操作所需要的状态信息: 1、需要在其上绘制的Component对象 2、呈现和剪贴坐标的转换原点 3、当前的剪贴区 4、当前的颜色...绘制图形轮廓的操作是通过使用像素大小的画笔 遍历像素间无限细分路径的操作,画笔从路径上的锚点向下和向右绘制,填充图形的操作是填充图形 内部区域无限细分路径操作。...(JFrame对象)。...如果,这样做,那么这个怪物在不同的机器上移动的速度就会不一样!性能好的机器上的怪物运行比较快,而性能慢的机器上的怪物运行比较慢。而怪物的动画我们使用主动呈现的技术来实现。
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中的图形来说,处在中间的节点可以不收节点控制(无法拖拽,不能交互),人家兄弟姐妹多,就拿那些势力若的边缘小弟拖过来拽过去^_^。
6.当场景没有空位且无法移动则游戏失败。 7.游戏分数为场景内最大的数字,当数字为2048时游戏结束。 代码的分析 感觉代码已经很简洁了 200来行就能写出这个游戏。 简易的思维导图 ?...文字版 Game2048 main主方法 SwingUtilities.invokeLater(() -> { JFrame f = new JFrame(); f.setDefaultCloseOperation...0xFAF8EF)); setFont(new Font("SansSerif", Font.BOLD, 48)); setFocusable(true); 监听鼠标 监听键盘 paintComponent绘制组件...highest = 0; gamestate = State.running; tiles = new Tileside; addRandomTile(); addRandomTile(); } drawGrid绘制面板...f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setTitle
(x - p.x) + (y - p.y) * (y - p.y) <= r * r; } } Java窗体类 @Getter public class AlgoFrame extends JFrame...绘制模版 根据以上的圆球的代码,我们将其抽象成一个以后用于填充各种算法的绘制模版,根据MVC的原理 显示层 @Getter public class AlgoFrame extends JFrame {...显示层 @Getter public class AlgoFrame extends JFrame { private class AlgoCanvas extends JPanel {...() * frame.getCanvasHeight()); data.addPoint(new Point(x,y)); } } } 由于可视化在屏幕上绘制占用的内存较大...由于此种方式无法展现排序的主要过程,所以我们做出修改。
领取专属 10元无门槛券
手把手带您无忧上云