2009-11-06 12 views
1

J'ai des problèmes avec les conteneurs et les composants de mon JApplet. Je ne mets pas mon code parce que je pense que ce n'est pas nécessaire.L'objet enfant du propriétaire de la classe Containers doit ajouter des composants dans le problème conteneur de son parent

La classe principale possède le getContentPane().

Une autre classe (appelons-la class1) possède un JLayeredPane() et des composants qui y sont ajoutés.

Une autre classe (appelons-la class2) n'a que des composants à afficher.

À l'init(), la classe principale ajoute JLayeredPane() de classe1.

À un moment ultérieur, class1 ajoute ses composants à son JLayeredPane() et crée un nouvel objet à partir de class2.

Classe2 est supposé générer un nombre variable de composants (le nombre de composants et leurs propriétés changent avec le temps), mais ne peut pas les ajouter à JLayeredPane() de classe1.

Comment puis-je afficher les composants class2?

Merci d'avoir lu.

Répondre

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) 

+0

La première façon a fonctionné parfaitement! Merci. –

1

Vous pouvez:

donner une référence de classe 1 à class2

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

Et chaque fois que two ajoute de nouveaux composants les mis à one

... in Class2 code 


Class1 one ... 

JComponent newComponent = .... 

one.add(newComponent); // onw.add delegates to its own JLayaredPane 

Si vous Je ne veux pas avoir de refe Class1 dans Class2 puis vous pouvez ajouter une méthode de rappel sur ou quelque chose comme un ContainerListener