【问题标题】:Containers class owner's child object having to add components into his parent's container problem容器类所有者的子对象必须将组件添加到其父容器的问题
【发布时间】:2009-11-06 22:40:48
【问题描述】:

我在处理 JApplet 中的容器和组件时遇到问题。 我没有放我的代码,因为我认为没有必要。

主类拥有 getContentPane()。

另一个类(我们称之为 class1)拥有一个 JLayeredPane() 和添加到它的组件。

另一个类(我们称之为class2)只有组件要显示。

在init()处,主类添加了class1的JLayeredPane()。

稍后,class1 将其组件添加到其 JLayeredPane(),并从 class2 创建一个新对象。

Class2应该生成可变数量的组件(组件的数量及其属性随时间变化),但不能将它们添加到class1的JLayeredPane()中。

我怎样才能显示 class2 组件?

感谢阅读。

【问题讨论】:

    标签: java swing applet containers


    【解决方案1】:

    三种方式 1. 将 JLayeredPane() 传递给 class2 的构造函数或方法 2. Class2 具有返回 Class1 可以返回的组件的方法 添加到 JLayeredPane() 3. 将 Class1 的对象传递给 class2,后者将调用 Class1 的方法 Class1 实现的已知接口(回调)

    【讨论】:

      【解决方案2】:

      你可以:

      给出class1到class2的引用

      ....In Class1 code
      Class2 two = new Class2();
      two.setClass1Ref( this );
      

      并且每次two 添加新组件时将它们设置为one

      ... in Class2 code 
      
      
       Class1 one ...
      
       JComponent newComponent = .... 
      
       one.add( newComponent ); // onw.add delegates to its own JLayaredPane 
      

      如果你不想在Class2 中引用Class1,那么你可以添加一个回调方法或类似ContainerListener 的东西

      【讨论】:

        猜你喜欢
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 2012-02-12
        • 2011-06-07
        相关资源
        最近更新 更多