当前位置: 首页 > 知识库问答 >
问题:

Java组件()

强硕
2023-03-14

java组件()

     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中,因为油漆Component()将使用super.paintComponent()重新绘制子节点。我认为情况会是这样。如果是这样,那么temp.repaint()应该重新绘制该特定组件,如果super.paintComponent()重新绘制该组件,则该组件将被调用。

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

如果我有几个扩展JComponent的类,我希望它们都能在类中使用,这样我就可以重新绘制它们。假设一个是圆、矩形、正方形等等。。。。。。。。。。。。。。

如果它们都有一个paintComponent()和一个super。paintComponent()它们应该能够用变量名称重新绘制。重新油漆()

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

驱动类:

  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(),则应该重新绘制上面的组件。

道格·豪夫


共有1个答案

罗寒
2023-03-14

是的,需要将MyClass添加到屏幕上可显示的内容中才能进行绘制。这里的推理是MyClass扩展了JComponentmyTestClass扩展了JPanel,它们没有任何关联,因此从myTestClass内部调用super.paintComponent不会以任何方式绘制或更新MyClass

任何你想画的东西都必须被添加到一个可显示的容器中。

看看AWT和Swing中的绘画,了解更多关于绘画的细节。

您可以根据需要在任何组件单独或其父容器上调用重新绘制

 类似资料:
  • 问题内容: 如果我有 我怎样才能从? 如果我这样做,那我就代替了。 问题答案: 组件类型 用这个: 返回表示数组的组件类型的信息。如果此类不表示数组类,则此方法返回。 参考: 安全/不安全铸造 有没有一种方法可以从getComponentType()返回的Class强制转换为Class,而不会收到编译器警告? 采取这种方法: 这是生成的字节码: 如您所见,参数类型被擦除为Object [],因此编

  • 数组在编程语言中是非常重要的数据结构。本小节我们来一起学习 Java 数组,通过本小节的学习,你将了解到数组的基本概念,如何声明数组以及数组的声明有哪些方式,如何初始化数组以及数组初始化有哪些方式,数组的常用操作有哪些,多维数组的声明、创建、初始化以及迭代等等。多维数组部分将以二维数组进行为例讲解,理解了二维数组,再去理解多维数组就相对容易了。 1. 什么是数组 数组是相同类型的数据按照顺序组成的

  • 我正在尝试更新我编写的程序的GUI。在新的GUI上,我有一个JFrame,其中包含一个JPanel,它有一个JTabbedPane和上面的两个按钮。 在JTabbedPane中,我有三个JPanel,其中包含不同的组件。(如按钮、文本字段等)所以现在我必须让所有组件根据类型对其执行相同的操作。 如果有一个文本字段,我必须做一些事情,但如果有一个按钮,我必须做其他事情。 所以之前我做过这样的事情:

  • 主要内容:1 什么是Java ThreadGroup(线程组),2 Java ThreadGroup类的构造方法,3 Java ThreadGroup类的方法,4 Java ThreadGroup类的例子1 什么是Java ThreadGroup(线程组) Java提供了一种将多个线程组合到单个对象中的便捷方法。这样,我们可以通过单个方法调用来挂起,恢复或中断线程组。 Java线程组由java.lang.ThreadGroup类实现。 ThreadGroup代表一组线程。一个线程组也可以包括另一

  • 问题内容: 我已经看到了几种有神论的方法,它们似乎都起作用,但是我只是想知道一种方法是否比另一种更好。 例如,一个叫你可以这样做: 您还可以执行以下操作: 这些“正确”之一吗? 问题答案: 来自类javadoc的文字副本 JFrame类与Frame略有不兼容。像所有其他JFC / Swing顶级容器一样,JFrame包含JRootPane作为其唯一的子级。根窗格提供的内容窗格通常应包含JFrame

  • 问题内容: 我有一个界面。 当我尝试创建这样的数组时会发生什么? 我如何实现此数组? 问题答案: 是的,有可能。您需要使用Type对象填充数组的字段 并且是实现Module接口的类。或者,您可以使用匿名内部类: 这回答了你的问题了吗?