J'ai une principale JFrame qui appelle une classe (A) et que la classe appelle une autre classe (B)
Dans la classe B je besoin d'un refrence à JFrame principal
Comment trouver ça?Java: Trouver l'appelant classe
Merci
J'ai une principale JFrame qui appelle une classe (A) et que la classe appelle une autre classe (B)
Dans la classe B je besoin d'un refrence à JFrame principal
Comment trouver ça?Java: Trouver l'appelant classe
Merci
Vous pouvez passer une référence du JFrame aux classes comme si
public class SomeFrame extends JFrame {
.
.
.
ClassA classA = new ClassA(arg1, arg2..., this, ...);
.
.
.
En ClasseA:
public class ClassA {
private JFrame someFrame;
public ClassA(arg1, arg2... JFrame someFrame,...)
{
this.someFrame = someFrame;
.
.
.
ClassB classB = new ClassB(arg1, arg2, this.someFrame, ...);
.
.
.
En ClassB:
public class ClassB {
private JFrame someFrame;
public ClassB(arg1, arg2, JFrame someFrame, ...) {
this.someFrame = someFrame;
.
.
.
Passing une référence semble comme la meilleure façon.
Une autre méthode consiste à rechercher la trace de la pile du thread en cours et à l'obtenir à partir de là. C'est l'une des réponses à cette question: Java logger that automatically determines caller's class name
Vous pouvez utiliser le motif de conception Inversion of Control (IoC) pour éviter le couplage de vos classes. Une implémentation spécifique de l'IoC est Dependency Injection. Si vous utilisez Java, vous pouvez utiliser Spring pour ne pas avoir à vous soucier de l'implémentation de l'injection de dépendance.
En termes généraux, il y a un conteneur qui prend soin des références. Dans votre cas, vous pouvez demander au conteneur d'injecter votre cadre principal dans la classe B afin que le cadre soit accessible depuis la classe B.
Vous devez transmettre cette référence de JFrame à A à B .. – halfdan
Merci beaucoup – RYN