当前位置: 首页 > 面试题库 >

油漆,重涂,paintComponent

穆宾白
2023-03-14
问题内容

对不起,我进行了大量搜索,以查找这3个功能(绘画,重绘,paintComponent)之间如何相互作用,但我不知道。您能准确解释一下它们何时被调用(因为有时java会在没有我问他的情况下调用它),它们到底在做什么,它们之间有什么区别。谢谢


问题答案:

我不确定“ paint”,但是我可以解释repaint()和paintComponent()之间的关系。

根据我在Java方面的有限经验,paintComponent()方法是JPanel类中的方法,并且是“ swing”的成员。

paintComponent()方法处理所有“绘画”。本质上,它使用Graphic对象将所需的任何内容绘制到JPanel中。

repaint()是所有JPanel对象的继承实例方法。调用[your_JPanel_object]
.repaint()会调用paintComponent()方法。

每次您希望更改JPanel的外观时,都必须调用repaint()。

某些操作会自动调用repaint()方法:

  • 调整窗口大小
  • 最小化和最大化您的窗口

仅举几例。

IN SHORT
paintComponent()是在JPanel或扩展JPanel的自定义类中定义的方法。repaint()是在另一个类(例如JFrame)中调用的方法,该方法最终调用paintComponent()。

这是一个例子:

    public class MyPanel extends JPanel{

    public void paintComponent(Graphics g){
        super.paintComponent(g);

        g.draw([whatever you want]);

        ...
        ...

    }
}
public class MyFrame extends JFrame{

    public MyFrame(){

    MyPanel myPanel = new MyPanel();

    myPanel.repaint();

    }

}


 类似资料:
  • 本章介绍Canvas组件,用它来生成简单的二维(2D)图形,目标是创建一个PaintPot(油漆桶)应用,让用户在手机屏幕上绘制图画,并让用户用手机给自己拍照,然后在自己的照片上绘图。回顾历史,早在20世纪70年代,PaintPot是最早运行在个人电脑上的应用之一,目的是为了证明个人电脑的潜力。那时候,开发这样一款简单的绘图应用是一项极其复杂的工作,而且绘图效果也略显粗糙。但现在,使用App In

  • 我试图编写一个小迷宫运行程序,遇到了一些与绘图组件()相关的麻烦。我已经完成了调试,出于某种原因,我的绘图组件()从未被调用,即使是由我的计时器调用的重新绘制()。 这些是我的frame和jpanel init方法。 这是我的paintComponent,图像确实已缓冲并已存储。 这就是我的ActionExecuted,它是用我的计时器调用的,默认设置为5秒的间隔。 } 如果你感兴趣,这是我的完整

  • 问题内容: 我正在使用Java Swing编写游戏。我想在每次循环执行时绘制一下,并在之间稍加延迟以在屏幕上创建级联效果。我相信系统中的效率例程会将调用折叠为一个调用。无论如何,所有更改都在总延迟后立即发生。是否有某种方法可以强制系统立即重新绘制,然后在循环的每次迭代中延迟? 我的代码: 问题答案: 您可以用来强制立即重绘。 编辑:再次阅读您的问题后,对我来说,您可能正在事件分发线程上执行逻辑。这

  • 问题内容: 我是绘画/图形的新手,想知道如何以一种方式将JPanel添加到我的代码 中,以使整个图形位于JPanel而不是 JFrame上。 换句话说,我正在尝试创建一个允许我执行此操作的GUI:在 右侧,在左侧的JPanel上显示行的漂亮运动,在其上 添加一个JTextArea(在JPanel上),该行将显示 图形的协调。 这是一个更大问题的简化,但是我想这里的代码更容易理解。 谢谢!!! 问题

  • 我正在创建html5绘画应用程序,目前正在处理混合层。我想知道在这样的程序中,哪种方法是最好的(最快的和类似gimp/photoshop的)。我的层(画布)是堆叠的。 通过CSS3属性更改混合模式(可能非常快-直接在显卡上混合) 具有隐藏的画布(图层)和一个画布来向用户显示平坦的图像。所以我们画在这些隐藏的画布上,有一些机制将每个隐藏的画布绘制到用户可见的画布上(可能较慢,但每个context.d

  • 最近,我一直在为一个二维应用程序研究各种奇特的碰撞检测算法和四叉树,并将我的应用程序放在我想要开始实现这些碰撞算法的地方。我的gameloop能够计算帧的Δt,我想在绘制的帧之间执行“插值”碰撞检查(与“蛮力”方法相反:尽可能快地绘制,导致性能和动画质量普遍下降)。 底衬 实现“插值”碰撞检查的最有效方法是什么?此外,是否有任何碰撞算法可以简单地采用Δt和速度来为我进行插值? 其他思考和信息 我在