一、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"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用
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方法,这个方法
一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布中绘制的图像根据按下的数值进行缩放 ; 在 AWT 自定义 Canvas 组件中 , 添加按键事件 , 下面定义的...} } }); 出现问题的博客代码 : 【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像...( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ) ; 二、解决方案 ---- 鼠标事件 , 可以添加到具体的 Component 组件上..., 但是凡是涉及到 键盘 的事件 , 必须添加到顶级组件 , 也就是窗口组件上 , 如 : Frame / JFrame 组件上 , 才能生效 ; 否则就会出现上述情况 , 为 组件设置的 KeyAdapter..., 即可实现想要的功能 ; JFrame.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e
JFrame JFrame是Swing中的顶级容器,用于展示应用程序的主窗口。通常,你的应用程序会有一个JFrame实例。...void main(String[] args) { JFrame frame = new JFrame("My First JFrame"); frame.setSize...它可以有自己的布局管理器,也可以自定义绘制。...如果直接将组件添加到JFrame,可能会导致布局混乱。 避免方法:先创建JPanel,再将组件添加到JPanel,最后将JPanel添加到JFrame。 3....按钮没有监听器,就无法响应用户的点击。 避免方法:为JButton添加ActionListener,处理actionPerformed事件。
一、键盘按键监听 - 要点分析 ---- 如果要为 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
JFrame是最上层的一个窗口,如果要绘制的话是不可以在窗口本身绘制的。MenuBar就是最大化最小化关闭等等的操作。...Content Pane其实是一个容器,可以装载其他的组件,最常用的就是面板,Jpanel就是一个面板,后面的绘制都会画在Jpanel上。也就是说想要画上东西就需要在Jframe上加入Jpanel。...绘制 在Jpanel类里面有一个paintComponent方法,这个方法是自带的一个方法,需要绘制的操作都要在这里面画。paintComponent带了一个画笔参数。...cirle); //g.drawOval(50, 50, 300, 300); } } 如果想要设置颜色,就可以直接调用setColor即可,而这个条件会一直持续要后面结束为止...在我们视觉上就会看到闪烁了一下,有一个经典的解决方法,就是用双缓存,也就是两个画布,用画布的切换来演示动画的运行。
} } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 ---- 在 【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
尤其是你添加值的时候,该列表更无法更新它的视图。 相反,你必须建立一个特定的模型,即DefaultListModel,将初始值填入该列表模型,然后将它与列表关联起来。...listData.elementAt(i); } }); } 这意味着,如果你在列表建立后修改了向量的内容,该列表在它被完全刷新之前,将会显示一个新值与旧值混合在一起的视图(上面的整个构造器中的final一词无法阻止你修改其他位置上的向量...但是,如果要显示一个图标的列表,实际上同样容易做到,你只需要传递一个填入了Icon对象的数组或向量即可。更加有意思的是,你可以非常容易地用你绘制的任何东西来代表你的列表值。...默认的绘制器 类型 绘制为 ImageIcon 图形 Boolean 复选框 Object 字符串 如果是其他类型的类,你可以提供你自己的单元格绘制器。...表格单元格绘制器与你在前面看到的树单元绘制器是类似的。
---- 在游戏中相应的实现即主要窗体用Frame和JFrame来构建。...设置抗锯齿属性也会失效 Ps:问题到目前为止还没有很好的处理,可能相应的用JPanel进行绘制会解决问题(暂未尝试!)...update()—>paint(); 默认的upadate()中自带clearRect()方法,即清屏功能,程序运行时我们调用repaint()方法刷新则会造成屏幕刚清空,又继续重新调用paint()方法往窗体上绘制...,重绘函数只需要在截图的画布上绘制即可,不必在从底层绘制 paint(gre); //将接下来的图片加载到窗体画布上去,才能考到每次画的效果 g.drawImage...这也就是JFrame本身的一种处理方法。 但是我们用JFrame编程并且重新update()实现双缓冲后,窗体一样狂闪不停!原因为何? 下面引用一张图来说明: ?
无论是在游戏开发、CAD 系统还是图形用户界面中,弧的绘制与处理都非常重要。然而,计算机通常无法直接绘制出完美的弧线,因此需要通过将弧线近似为一系列直线段来进行绘制。这一过程被称为“弧度转多线段”。...代码解析:这段 Java 代码的目的是计算并打印一个圆弧上若干分割点的坐标。...计算后的坐标大致分布在右下角和右上角的圆弧上。代码的作用这个代码可以用于图形学中的圆弧绘制,或者任何涉及到圆弧分割的场景。3....太少的线段可能导致弧线的近似不够精确,导致视觉上出现明显的折线;而太多的线段又可能导致计算和绘制的性能问题。...frame = new JFrame("弧转多线段示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize
展示爱心前,可以先复制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); // 绘制椭圆
我们希望将输入的文字渲染到屏幕上,并为其添加一个边缘效果,使其在视觉上更加突出。 实现思路 为了实现文字边缘效果,我们可以利用图形库来绘制文字,并应用一些特殊的技巧来实现边缘效果。...将绘制好的文字显示在屏幕上。....*; public class TextOutlineExample extends JFrame { public TextOutlineExample() { super...("Text Outline Example"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void...通过多次绘制文字,并稍微改变位置,我们可以实现文字的边缘效果。 总结 在本文中,我们介绍了如何使用Java语言实现文字边缘效果。通过使用Java的图形库,我们可以轻松地在文字上添加边缘效果。
计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480 000个像素。...像素是一个密度单位,而厘米是长度单位,两者无法比较。 介绍-快速入门 绘图原理 在面板上画一个小圆。...Component类提供了两个和绘图相关最重要的方法:1. paint(Graphics g)绘制组件的外观 repaint()刷新组件的外观。...当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。...//g.drawOval(10, 10, 100, 100); //演示绘制不同的图形..
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:上,
设置之后窗口就会一直在其他窗口的上面显示 去除窗口边框: setUndecorated();方法,写true就是除去窗口的边框, false则反之: ? 运行效果: ?...设置窗口对象的默认关闭方式: setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 直接关闭虚拟机 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE...); 隐藏关闭,对象不会销毁 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 销毁对象关闭 窗口标题: setTitle();方法,可以设置窗口的标题...流式布局里的组件会随着窗口的拉动而改变 卡片布局: CardLayout是卡片布局对象,可以直接在setLayout();方法里new这个卡片布局对象,就可以实现流式布局了: ?
import javax.swing.*; import java.awt.*; public class Demo4 extends JFrame { public Demo4()...{ setTitle("Star Drawing"); setSize(400, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...SwingUtilities.invokeLater(() -> { new Demo4(); }); } } 核心算法说明: 创建一个JFrame...变量)需要适当设置,太小会导致五角星变形 Bresenham算法是一种高效的直线绘制算法,但在字符网格上可能出现不连续的情况 边界检查很重要,防止数组越界异常 使用方法 GUI绘制方法 (Demo4.java...文件:javac Demo5.java 运行程序:java Demo5 程序会在控制台输出由’*'字符组成的五角星 程序执行完毕后自动退出 对学习Java的重要作用 面向对象编程实践:通过继承JFrame
--------------------------------------------- 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新手的实战能力有很大的提升。