首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java paintComponent()

Java paintComponent()
EN

Stack Overflow用户
提问于 2013-11-07 03:17:47
回答 1查看 649关注 0票数 1

java paintComponent()

代码语言:javascript
复制
     class MyClass extends JComponent {
         void paintComponent() {
             //code for class here
          }
     }

     class myTestClass extends JPanel {
         MyClass temp = new MyClass();

         void paintComponent() {
               super.paintComponent();


      static void main(String[] a) {
           JFrame f = new JFrame();
              //Does the temp have to be added to the panel before it can be repainted
      } 
     } //End Class

我知道JPanel会进入JFrame。但是,类(MyClass)是否必须添加到JPanel中,因为paintComponent()将用super.paintComponent()重新绘制子节点。我认为情况会是这样。如果是这样的话,那么如果temp.repaint()重新绘制组件,那么super.paintComponent()应该在调用特定组件的任何地方重新绘制该组件。

这似乎是一个没有人给出的答案,或者至少是没有人真正发布的答案。我的解释可能有点,所以我会尝试在这里澄清它。

如果我有几个扩展JComponent的类,并且我希望它们都在类中使用,那么我就可以重新绘制它们。假设一个人是圆、长方形、正方形等.

如果它们都有一个带有paintComponent()super.paintComponent(),那么它们应该能够用VariableName.repaint();重新绘制。

它们是否必须添加到将作为内容保存它们的JPanel中。在代码中的任何地方都可以调用它们为repaint() (我认为是这样的)。

司机班:

代码语言:javascript
复制
  class MyMainDriverClass {
    A a = new A();
    B b = new B();
    C c = new C();

void someClass() {
   a.repaint();
   b.repaint();
   c.repaint();  //this should repaint the components if the JPanel is inside of the JFrame 
                 //(I didn't put this code in)
 }
}

如果创建的所有类都有paintComponent(),则应该重新绘制上面的组件。

道格·豪夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-07 03:29:33

是的,MyClass需要添加到屏幕上可显示的东西中,这样才能被绘制。这里的理由是MyClass扩展了JComponentmyTestClass扩展了JPanel,它们没有任何关系,所以从myTestClass内部调用super.paintComponent不会以任何方式绘制或更新MyClass

您想要绘制的任何东西都必须添加到可显示的容器中。

有关绘画的更多细节,请看一看AWT和Swing中的绘画

您可以根据需要在任何repaint个人或其父容器上调用Component

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19827387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档