Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1744 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  virer les actions d'un JButton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

virer les actions d'un JButton

n°1417340
meumeul
Stay Heavy
Posté le 01-08-2006 à 12:08:37  profilanswer
 

bonjour,
 
je cherche à remplacer dynamiquement l'action liée à un JButton de cette manière :
 

Code :
  1. public void setActionOnClassifyButton(ActionListener al, boolean removeOthers) {
  2.  if (removeOthers) {
  3.   for (int i = 0; i < classifyButton.getActionListeners().length; i++) {
  4.    classifyButton.removeActionListener(classifyButton.getActionListeners()[i]);
  5.   }
  6.  }
  7.  classifyButton.addActionListener(al);
  8. }


 
Problème : c'est toujours l'ancienne action qui s'execute.
 
Je ne trouve pas de méthode removeAllActionListeners() implémentée ...
 
Quelqu'un aurait il une idée ?
 
Merci beaucoup, et bon app à ceux qui mangent !

mood
Publicité
Posté le 01-08-2006 à 12:08:37  profilanswer
 

n°1417590
meumeul
Stay Heavy
Posté le 01-08-2006 à 16:30:37  profilanswer
 

up

n°1417626
Ledid
Posté le 01-08-2006 à 17:38:33  profilanswer
 

Je me suis intéressé à la question et je ne comprends pas d'où viens ton dysfonctionnement.
 
J'ai codé cette classe et ça marche très bien!
 

Code :
  1. import java.awt.BorderLayout;
  2. import java.awt.Dimension;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import javax.swing.JButton;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. public class Test {
  9. private JButton classifyButton;
  10. public Test() {
  11.  classifyButton = new JButton("Test" );
  12.  classifyButton.addActionListener(new ActionListener() {
  13.   public void actionPerformed(ActionEvent arg0) {
  14.    System.out.println("Ancienne action" );
  15.   }
  16.  });
  17. }
  18. public void setActionOnClassifyButton(ActionListener al,
  19.   boolean removeOthers) {
  20.  if (removeOthers) {
  21.   for (int i = 0; i < classifyButton.getActionListeners().length; i++) {
  22.    classifyButton.removeActionListener(classifyButton
  23.      .getActionListeners()[i]);
  24.   }
  25.  }
  26.  classifyButton.addActionListener(al);
  27. }
  28. public static void main(String[] args) {
  29.  final Test test = new Test();
  30.  JButton button = new JButton("Changer l'action" );
  31.  button.addActionListener(new ActionListener() {
  32.   public void actionPerformed(ActionEvent arg0) {
  33.    test.setActionOnClassifyButton(new NewActionListener(), true);
  34.   }
  35.  });
  36.  JFrame frame = new JFrame();
  37.  JPanel panel = new JPanel();
  38.  panel.setLayout(new BorderLayout());
  39.  panel.add(test.getClassifyButton(), BorderLayout.NORTH);
  40.  panel.add(button, BorderLayout.SOUTH);
  41.  frame.getContentPane().add(panel);
  42.  frame.setVisible(true);
  43.  frame.pack();
  44.  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  45. }
  46. /**
  47.  * @return Renvoie le classifyButton.
  48.  */
  49. public JButton getClassifyButton() {
  50.  return classifyButton;
  51. }
  52. }
  53. class NewActionListener implements ActionListener {
  54. public void actionPerformed(ActionEvent arg0) {
  55.  System.out.println("Nouvelle Action" );
  56. }
  57. }

n°1418725
meumeul
Stay Heavy
Posté le 03-08-2006 à 09:51:32  profilanswer
 

Je comprends pas ...
Peut être est ce parce que je le fait alors que ma frame est déjà affichée ?
 
Mais updateUI() ou repaint() ni font rien.  
Comment peut on rafraîchir toute une frame et la redessiner proprement ?
 
edit : en evitant pack() qui fait des trucs laids


Message édité par meumeul le 03-08-2006 à 09:52:04
n°1418742
Ledid
Posté le 03-08-2006 à 10:12:57  profilanswer
 

Méthode validate, mais ça n'a rien à voir avec ton problème : Ce n'est pas l'affichage qui pose problème mais l'action associée au bouton.
Essaie de t'inspirer de mon code et de comprendre ce qui ne fonctionne pas dans le tien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  virer les actions d'un JButton

 

Sujets relatifs
Plusieurs actions pour le bouto nsubmit en PHP?Comment superposer deux images sur un JButton?
pb deux actions differanteschanger la valeur d'un jbutton quand je clic dessus
Association actions/touchesImage Map + onmouseover avec 2 actions
[Html/CSS] Virer les tableauxformulaire avec 2 actions ??
JS : deux actions pour un seul clickjbutton qui ouvre un link
Plus de sujets relatifs à : virer les actions d'un JButton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR