Java 绘画组件
首先,我们将回顾一下 Java PaintComponent()
方法的工作原理。 它什么时候调用,它的子系统和类的结构是什么?
最后,我们将向您展示如何使用此方法在屏幕上绘制图形。 继续阅读以了解更多信息。
Java 中的 PaintComponent() 方法
考虑一个可以保存所有绘画和图形代码的位置。 请注意,它默认是锁定的,只有在您请求时才会让您进入。
它说明什么? 当需要绘画时,就会启动此方法。
另一方面,绘画是从更高的阶层开始的。 分析它的类层次结构:java.awt.Component。
每当您的组件需要渲染时,绘画子系统都会调用此方法。
Java PaintComponent()
如何被调用? Java AWT 支持回调机制。
值得注意的是,AWT 回调机制对于重量级和轻量级组件都是相同的。 这些组件用于绘制,无论如何调用/触发特定的绘制请求。
程序应该将渲染代码放置在特定的重写方法中。 当需要绘制时,相同的工具包将调用此方法。
句法:
import java.awt.*;
import javax.swing.*;
public void paintComponent(Graphics g) {
//your code goes here
}
此外,javax.swing.JComponent 通过将paint 方法划分为三个不同的方法来扩展此类。
-
protected void paintComponent(Graphics g)
-
protected void paintBorder(Graphics g)
-
protected void paintChildren(Graphics g)
我们相信到目前为止您已经了解了该方法的基础知识。 现在,让我们讨论另一个我们通常使用的 PaintComponent() 方法。
而且,现在还不是将其交给之前讨论的系统的时候。 不过,我们可以要求系统使用 repaint() 方法刷新显示。
使用画图的最佳实践:
- 不要将渲染代码放在任何地方; 它可以在绘制回调的范围之外调用。 当不适合绘制时可以调用此类代码。
- 在组件可见或可以访问有效的 Graphics 对象之前,不建议程序直接调用paint()。
AWT 异步请求绘制操作。 查看以下代码块以获得一个想法。
代码:
public void repaint()
public void repaint(long xyz)
public void repaint(int a, int b, int definewidth, int defineheight)
public void repaint(long xyz, int a, int b,
int definewidth, int defineheight)
这是一个完整的 Java 演示示例。
代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
//main class
@SuppressWarnings("serial")
class PainComponentDemo extends JPanel {
public PainComponentDemo() {
//setting background
setBackground(Color.CYAN);
}
@Override
//override java paintComponent
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(0, 0, getWidth(), getHeight());
}
// driver function
public static void main(String[] args) {
//extend jfram
JFrame custJF = new JFrame();
custJF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
custJF.setSize(500, 499);
custJF.add(new PainComponentDemo());
custJF.setVisible(true);
}// driver function ends
}// main class ends
输出:
相关文章
在 Java 中使用 SwingUtilities.invokeLater()
发布时间:2023/08/10 浏览次数:101 分类:Java
-
SwingUtilities.invokeLater() 方法在 Abstract Window Toolkit (AWT) 事件调度线程上执行可运行对象。 我们这样做是因为 Swing 数据结构不是线程安全的。线程安全意味着它可以从多个线程并行使用而不会导致
Java 尾部调用优化
发布时间:2023/08/10 浏览次数:170 分类:Java
-
本文讨论尾部调用优化(也称为 TCO)及其在 Java 中不存在的原因。 我们还将看到一些其他可以用来在 Java 中模拟 TCO 的方法。什么是尾调用优化
修复警告:使用或覆盖 Java 中已弃用的 API
发布时间:2023/08/10 浏览次数:75 分类:Java
-
本文我们将了解为什么警告说使用或覆盖已弃用的 API,并演示如何修复此问题以完成任务。修复警告说使用或覆盖 Java 中已弃用的 API
使用 Java 删除文件夹
发布时间:2023/08/09 浏览次数:76 分类:Java
-
在本文中,我们将学习如何使用 Java 编程语言删除文件夹/目录。 有多种方法可以做到这一点。 让我们一一看看。使用Java的File类的delete()删除空文件夹
Java 中的多个动作监听器
发布时间:2023/08/09 浏览次数:178 分类:Java
-
本文我们将介绍如何在 Java 中创建多个动作监听器。在Java中,ActionListener是一个用于处理动作事件的类。 因此,Java 提供了这个接口,使用它我们可以找到用户单击按钮的位置,并生成一些事件
在 Java 中创建通用链表
发布时间:2023/08/09 浏览次数:186 分类:Java
-
本文我们将介绍如何在 Java 中创建一个通用的单链表。Java LinkedList 简介 LinkedList 是线性数据结构,它将数据存储在随机地址的节点中,并且意味着位于不连续的位置。
在JavaFX中使用setAlignment方法
发布时间:2023/08/09 浏览次数:129 分类:Java
-
在本文中,我们将了解如何以我们自己的格式对齐 HBox。 我们将看一个例子并逐行解释它以使其更容易理解。在 JavaFX 中使用 setAlignment() 方法
在 JavaFX 中使用 KeyEvent
发布时间:2023/08/09 浏览次数:70 分类:Java
-
KeyEvent 用于检测按键并在按下按键时执行特定的代码块。本文将展示如何创建按键事件并在用户按下按键时执行简单的代码。 我们还将看到一个简单的示例,以使其更容易理解。