为什么paintComponent执行了2次?

发布于 2025-01-07 21:32:12 字数 337 浏览 1 评论 0原文

我有以下代码:

        canvas=new MembershipFunctionComponent(functions);
        canvas.setPreferredSize(new Dimension((int)this.getWidth(), (int)this.getHeight()));
        canvas.addMouseListener(canvas);
        pane.add(canvas);

MembsershipFunctionComponent 扩展 JComponent。为什么paintComponent方法执行了2次?

I have following code:

        canvas=new MembershipFunctionComponent(functions);
        canvas.setPreferredSize(new Dimension((int)this.getWidth(), (int)this.getHeight()));
        canvas.addMouseListener(canvas);
        pane.add(canvas);

MembsershipFunctionComponent extends JComponent. Why is paintComponent method executed 2 times?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深陷 2025-01-14 21:32:12

paintComponent 几乎可以随时被 Swing 框架调用。这种情况可能发生的示例:

  • 任何时候调整组件大小
  • 任何时候显示组件的一部分(例如在可滚动窗口中)
  • 任何时候在组件(或者可能是父组件或子组件)上调用 repaint() 方法)
  • 任何时候布局发生变化,

这些都不应该让您担心 - 您应该只编写代码,这样它就不会关心调用 PaintComponent 了多少次。

paintComponent can get called at pretty much any time by the Swing framework. Examples of when this might happen:

  • Any time a component is resized
  • Any time part of the component is revealed (for example in a scrollable window)
  • Any time the repaint() method is called on your component (or possibly a parent or sub-component)
  • Any time there is a layout change

None of this should worry you - you should just write your code so that it doesn't care how many times paintComponent is called.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文