Probleme avec les listeners

cs_seb87 Messages postés 37 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 6 septembre 2004 - 2 juin 2004 à 15:16
cs_seb87 Messages postés 37 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 6 septembre 2004 - 3 juin 2004 à 07:50
J'ai créé 3 classes pour gérer une interface graphique en swing.

J'ai séparé parceque cela me semblait plus simple que de faire une seule "grosse classe".

maintenant que je veux rajouter des evenements. je dois appeler des méthodes d'une classe depuis des composants d'une autre classe.
En pratique j'ai un bouton dans une classe qui doit me permettre de modifier la valeur d'un JLabel dans la barre d'état .
j'ai donc dérivé la classe qui gére l'affichage principal (extends ma classe) pour accéder aux méthodes.

La méthode est bien appelé par contre cela ne change pas la valeur de mon JLabel. Alors que si j'appelle la methode dans sa propre classe il n'ya pas de probleme.

est ce la structure de mon programme qui n'est pas bonne. Pour l'instant j'en suis juste au début, je peux donc encore changé la structure sans trop de problème . Si une bonne âme pouvait m'aider.

3 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
2 juin 2004 à 17:07
hum,. c'est un peu court pour puvoir diagnostiquer...
un peu de ton code, voir tout serait bienvenue pour t'aider...
Mais comme toujours, ca doit etre un ch'tit bug a la con...
-------------------
>:) dams >:)
-------------------
0
cs_seb87 Messages postés 37 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 6 septembre 2004
2 juin 2004 à 17:27
ben surement comme je debute ....

public class CreateDefectPanel extends CreateWnd {
private JButton Annuler = new JButton("Annuler");
private JButton saisie = new JButton("Saisie");
... (suite des declaration)

... (parametrage de mon JPanel)

saisie.setPreferredSize(new Dimension(150,30));
c.gridx = 3;
c.gridy = 1;

saisie.setBackground(new java.awt.Color(135,190,200));
saisie.setMnemonic('V');
saisie.setActionCommand("Validate");
DefectPan.add(saisie, c);

saisie.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//C la que j'appelle la fonction
SetBarreEtat("Ca marche");
}
});



return DefectPan;
}
}
===========================================
ma classe principale
============================================

public class CreateWnd extends JPanel {
private JTabbedPane tab;

private JFrame fenetre;
...(Declaration)
private CreatePlan ClassPlan;
private CreateDefectPanel ClassDefect;
private CreateHistory ClassHistory;

public static void main(String[] args)
{
CreateWnd Wnd = new CreateWnd();
Wnd.setName("Visual Control");
Wnd.Init();
Wnd.SetSize(800,600);
Wnd.NewWnd();

}

public void Init()
{
//Creation de la fenetre
fenetre = new JFrame(this.NmWindow);
EndComment.setFont(new Font("Dialog", java.awt.Font.BOLD, 12));
EndComment.setForeground(new Color(0,51,255));
Setserial("EP2503569");

}
....

//Fonction appelée
public void SetBarreEtat(String Comment)
{
EndComment.setText(Comment);

}

public void NewWnd()
{
....

Container panneau = fenetre.getContentPane();

panneau.setLayout(new BorderLayout(5,5));
panneau.add(this.AddNorth(),BorderLayout.NORTH);
//ajout de ma barre d'état EndComment.setBorder(BorderFactory.createLoweredBevelBorder());
panneau.add(EndComment,BorderLayout.SOUTH);
AddTab();
panneau.add(tab,BorderLayout.CENTER);

fenetre.pack() ;
fenetre.setSize(this.WndWidth ,WndHeight);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.show();
SetBarreEtat("Initialisation2");
}

public void AddTab()
{
ClassPlan = new CreatePlan("img/248_0.jpg","plan N°148","plan N°148");
//instanciation des ss classes

ClassDefect = new CreateDefectPanel();
ClassHistory = new CreateHistory();

JPanel TabPlanPan = new JPanel(new BorderLayout(5,5));

TabPlanPan.add(ClassPlan.addPlan(),BorderLayout.CENTER);
TabPlanPan.add(ClassDefect.AddDefectPanel(),BorderLayout.SOUTH);

this.tab = new JTabbedPane();
ImageIcon icon = new ImageIcon ("src/img/Ctrl.gif");
this.tab.addTab("Historique",icon, ClassHistory.AddHistory());
ImageIcon icon2 = new ImageIcon ("src/img/list.gif");
this.tab.addTab("CTRL",icon2,TabPlanPan);
this.tab.setBackground(new Color(186,208,155));

}

public JPanel AddNorth()
{
JPanel NorthPane = new JPanel(new GridBagLayout());
NorthPane.setBackground(new Color(186,208,155));

GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.RELATIVE ;
c.insets = new Insets(5,5,5,5);

c.weightx = 0;
c.gridx = 0;
c.gridy = 0;

c.gridx = 1;
c.gridy = 0;

NorthPane.add(new JLabel("Numéro de série"), c);

this.SN.setPreferredSize(new Dimension(100,20));

c.gridx = 2;
c.gridy = 0;

NorthPane.add(this.SN, c);

return NorthPane;
}

}

c'est un peu confus quand on fait un copié collé brut de fonderie, j'espere que tu y verras plus clair que moi :big)

en fait j'arrive pas a intervenir sur les composants de la superclasse, même si j'accede aux méthodes qui me permettrai de les modifier
0
cs_seb87 Messages postés 37 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 6 septembre 2004
3 juin 2004 à 07:50
Je sais que c'est pas evident comme ca, mais ya un truc que j'ai du oublié quelques part? parceque c'est une fonction basique qui me permet de mettre le texte que je veux dans ma barre d'état.

A la base c'est pas primordiale , mais ca me permet de vérifier si ma démarhe est le bonne pour la suite du developpement. Et en l'occurence ya quelque chose qui cloche
>:)
0