我在处理JApplet中的容器和组件时遇到问题。 我没有放我的代码,因为我觉得没有必要。
主类拥有getContentPane()。
另一个类(我们称之为class1)拥有一个JLayeredPane()和添加到它的组件。
另一个类(我们称之为class2)只有要显示的组件。
在init()中,主类添加了class1的JLayeredPane()。
稍后,class1将其组件添加到其JLayeredPane(),并从class2创建一个新对象。
Class2应该生成可变数量的组件(组件数量及其属性随时间变化),但不能将它们添加到class1的JLayeredPane()。
如何展示class2组件?
感谢阅读。
答案 0 :(得分:2)
Three ways 1. Pass JLayeredPane() to the class2's constructor or a method 2. Class2 has methods that return the components that Class1 can add to JLayeredPane() 3. Pass Class1's object to class2 which will call Class1's method through a known interface that Class1 implements (a callback)
答案 1 :(得分:1)
你可以:
将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
如果您不想在Class1
中引用Class2
,那么您可以在ContainerListener上添加回调方法