JToggleButton + Action

JToggleButton + Action - Java - Programmation

Marsh Posté le 30-01-2003 à 17:16:38    

Hop
 
 
J'ai un JToggleButton... et une implementation d'Action
bon.
je veux que mon button declenche cette action qd on clique dessus mais aussi quand on fait "ctrl-D"
tout ça marche.
SAUF QUE quandon fait ctrl-D, l'etat visuel du bouton change pas :/
Je pensais que l'action faisait ça comme une grande moua?
 
 


Action myAction = new PouetAction("pouet" );
myButton = new JToggleButton(myAction);
myButton.getInputMap(
                JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                        KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_MASK), "tralala" );
        myButton.getActionMap().put("tralala", myAction);

 
 
keske j'ai "oublié" là! ? :/


Message édité par --greg-- le 30-01-2003 à 23:43:22

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 30-01-2003 à 17:16:38   

Reply

Marsh Posté le 30-01-2003 à 20:15:37    

up :(
 
 
(promis je tape un oeil à tous les topics java d'aujourd'hui en rentrant chez moi tout à l'heure...)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 30-01-2003 à 22:36:19    

bon mtnt que j'ai uppé tous les topics java que je pouvais, je remonte les miens :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 30-01-2003 à 23:49:31    

mais ou est passé gfive :??: :d


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 00:31:40    

bon je fais ça mais je trouve ça tout pourri:

Code :
  1. public class Test extends JDialog {
  2.     public static void main(String[] args) {
  3.         new Test().setVisible(true);
  4.     }
  5.     private JToggleButton myButton;
  6.     public Test() {
  7.         setContentPane(new TestPanel());
  8.         pack();
  9.         validate();
  10.     }
  11.     class TestTitledBorderPanel extends JPanel {
  12. public TestTitledBorderPanel() {
  13.     super();
  14.     ToggleListener listnr = new ToggleListener();
  15.     myButton = new JToggleButton("pouet" );
  16.     myButton.addActionListener(listnr);
  17.     myButton.addKeyListener(listnr);
  18.     add(myButton);
  19. }
  20.     }
  21.     class ToggleListener implements ActionListener, KeyListener {
  22.         public void actionPerformed(ActionEvent e) {
  23.             System.out.println("tralalalala!" );
  24.         }
  25.         public void keyPressed(KeyEvent e) {
  26.             if (e.getKeyCode() == KeyEvent.VK_D && e.isControlDown()) {
  27.                 System.out.println("pouet" );
  28.                 myButton.setSelected(!myButton.isSelected());
  29.             }
  30.         }
  31.         public void keyTyped(KeyEvent e) {
  32.         }
  33.         public void keyReleased(KeyEvent e) {
  34.         }
  35.     }
  36. }


 
tout pourri notamment parce que si je dois définir le raccourci clavier dans le listener et qu'en plus comme ça, il n'ecoute que qd il a le focus... :/
 
ce qui fait que ça marchait pas avec l'autre methode c que je pouvais pas determiner si l'action avait été declenchée par un click ou par le raccourci clavier...
[:meganne]


Message édité par --greg-- le 31-01-2003 à 00:36:03

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 00:47:25    

voilà la version avec Action
 
 

Code :
  1. import javax.swing.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.KeyEvent;
  4. public class TestToggle extends JDialog {
  5.     public static void main(String[] args) {
  6.         new TestToggle().setVisible(true);
  7.     }
  8.     private JToggleButton myButton;
  9.     public TestToggle() {
  10.         setContentPane(new TestTogglePanel());
  11.         pack();
  12.         validate();
  13.     }
  14.     class TestTogglePanel extends JPanel {
  15. public TestTogglePanel() {
  16.     super();
  17.     add(new JButton("rien" ));
  18.     myButton = new JToggleButton("pouet" );
  19.     Action myAction = new AbstractAction("trrrrrr" ) {
  20.         public void actionPerformed(ActionEvent e) {
  21.             System.out.println("TRIIIIIIIIIIIIIIIIIIIIIIIIIIIIII" );
  22.             System.out.println("e.getActionCommand() = " + e.getActionCommand());
  23.             System.out.println("e.paramString() = " + e.paramString());
  24.             myButton.setSelected(!myButton.isSelected()); // --> beh du coup qd on clique c selectionné/deselectionné d'un coup :/
  25.         }
  26.     };
  27.     myButton.getInputMap(
  28.                JComponent.WHEN_IN_FOCUSED_WINDOW).put(
  29.                        KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_MASK), "inputactionmap" );
  30.             myButton.getActionMap().put("inputactionmap", myAction);
  31.             myButton.setAction(myAction);
  32.     add(myButton);
  33. }
  34.     }
  35. }

 
je sais pas comment reconnaitre si on clique ou si on utilise le raccourci clavier. j'esperais la clé utilisée dans les input et action map serait utilisée comme actionCommand mais apparement non :/
alors là le seul truc c'est que l'actionCommand quand on clique vaut le nom de l'action... mais sachant que ce nom est utilisé pour l'affichage du label sur le bouton, spa top :/
l'actionCommand quand on utilise le clavier vaut la "touche" utilisée, ce qui pour ctrl-d, sous dos, nous fait un joli petit diamant... pas top non plus quoua :/ jdevrais pas avoir a connaitre le raccourci-clavier dans l'action
heeeeelp


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 01:10:06    

bon
 
voici une version ou je me fait pas chier avec inputmap et actionmap et qui marche...  
 
 

public class TestToggle extends JDialog {
    public static void main(String[] args) {
        System.out.println((int)'d');
        new TestToggle().setVisible(true);
    }
    private JToggleButton myButton;
    public TestToggle() {
        setContentPane(new TestTogglePanel());
        pack();
        validate();
    }
 
    class TestTogglePanel extends JPanel {
 
 public TestTogglePanel() {
     super();
 
     add(new JButton("rien" ));
 
     myButton = new JToggleButton("pouet" );
     Action myAction = new AbstractAction("trrrrrr" ) {
         public void actionPerformed(ActionEvent e) {
             System.out.println("TRIIIIIIIIIIIIIIIIIIIIIIIIIIIIII" );
             if (e.getActionCommand().equals("keyboardAction" ))
                 myButton.setSelected(!myButton.isSelected());
         }
     };
     myButton.registerKeyboardAction(myAction,
             "keyboardAction",
             KeyStroke.getKeyStroke("control D" ), // 100, InputEvent.CTRL_MASK
             JComponent.WHEN_IN_FOCUSED_WINDOW);
            myButton.setAction(myAction);
 
     add(myButton);
 }
    }
}

 
si qqun passe par là merci de me dire ce qu'il en pense...
 
(pour le "control D", jdois etre un peu concon mais j'y arrive pas autrement :))


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 15:40:38    

up :/


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 18:23:36    

ça suxxxxxxe je veux pas que mon action connaisse le Button :fou:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 31-01-2003 à 20:23:43    

désolé ms j'ai aucune idée pour t'aider
en fait après avoir lu tous tes msgs, je me rappelle meme plus de ton pb :pt1cable:  
 
mais je vois pas pkoi tu veux que ton bouton change d'aspect avec le raccourci, ca ne le fait avec aucune autre lib graphique (en tous cas pas dans celles que j'utilise).
 
meme si j't'ai pas aidé, ca te fait un ptit up et en + tu seras - seul dans ce topic  :D

Reply

Marsh Posté le 31-01-2003 à 20:23:43   

Reply

Marsh Posté le 01-02-2003 à 15:48:18    

gloop a écrit :

désolé ms j'ai aucune idée pour t'aider
en fait après avoir lu tous tes msgs, je me rappelle meme plus de ton pb :pt1cable:  
 
mais je vois pas pkoi tu veux que ton bouton change d'aspect avec le raccourci, ca ne le fait avec aucune autre lib graphique (en tous cas pas dans celles que j'utilise).
 
meme si j't'ai pas aidé, ca te fait un ptit up et en + tu seras - seul dans ce topic  :D  

merci ;)
 
ben ce que je veux c'est que le ctrl-d ai le meme effet qu'un click sur le bouton... donc ça doit appeler l'action mais aussi "enfoncer" le bouton...c un ToggleButton...c comme une checkbox koi..2 états.


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 01-02-2003 à 15:58:08    

--greg-- a écrit :

merci ;)
 
ben ce que je veux c'est que le ctrl-d ai le meme effet qu'un click sur le bouton... donc ça doit appeler l'action mais aussi  "enfoncer" le bouton...c un ToggleButton ...c comme une checkbox koi..2 états.
 


ok, mais comme je te l'ai dit un peu + haut, une fois arrivé en bas, j'me rappellai plus du pb  :??:  

Reply

Marsh Posté le 01-02-2003 à 17:31:19    

gloop a écrit :


ok, mais comme je te l'ai dit un peu + haut, une fois arrivé en bas, j'me rappellai plus du pb  :??:  
 

ben je viens de te le rappeler ;)
mon pb mtnt c'est que ça marche mais que j'ai pas trouvé d'autre moyen que de foutre une reference à mon toggleButton dans l'Action et je trouve ça nul :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed