[resolu] focus sur JFrame

focus sur JFrame [resolu] - Java - Programmation

Marsh Posté le 20-12-2004 à 11:11:33    

Bonjours a tous,
 
je bloque actuellement sur plusieurs problemes lie a JFrame.
j'ai une application qui possede une fenetre principale, ainsi qu'une autre JFrame qui apparait pour demander la saisie d'information, qui possede une JcomboBox ainsi qu'un tableau d'icone associe affiche dans un JPanel pour l'affichage de l'image selectionne.
 
le focus n'agit pas lorsque j'instancie ma classe et apres avoir fait un request focus.
 
voici l'instanciation de la fenetre de saisie faite dans la classe principale:
 
ListeDeroulanteTest lm = new ListeDeroulanteTest("SousApplication" );
lm.setLocation(300, 300);
lm.requestFocus();
 
 
contenu de ListeDeroulanteTest:
 
public class ListeDeroulanteTest extends JFrame implements FocusListener{
   private JComboBox images;
   private JLabel etiquette;
   
   public  Icon[] icones;
     
   public JTextField nom;
   
   private String noms[] =
   {    "./images/ConfigurationItem.32.gif",
      "./images/ServiceLevelAgreement.32.gif",
   "./images/WorkGroup.32.gif",
   "./images/africa.32.gif",
   "./images/aix.32.gif",
   
 };
   
   public ListeDeroulanteTest(String nomType)
   {
      super( "./imagesTest de JComboBox" );
     
      Container c = getContentPane();
      c.setLayout( new GridLayout(5, 1) );      
       
      //initialisation de la structure de donnee
      icones = new Icon[noms.length];
       
      JLabel texte = new JLabel("Saisie " + nomType);
   nom = new JTextField();
     
   JButton validation = new JButton("valider" );
     
      images = new JComboBox( noms );
      images.setMaximumRowCount( 123 );
       
      //positionnement des etiquettes par default
      if(nomType.equals("SousApplication" )){
       images.setSelectedIndex(10);
      }
       
      //initialisation du tableau d'icones
      for(int i=0; i< noms.length; i++){
       //icones[i] = new ImageIcon( "./images/" + noms[ i ] );
       icones[i] = new ImageIcon( noms[ i ] );
      }
 
      images.addItemListener(
         new ItemListener() {
            public void itemStateChanged( ItemEvent e )
            {
               etiquette.setIcon(
                  icones[ images.getSelectedIndex() ] );
            }
         }
      );
 
      etiquette = new JLabel( icones[ 0 ] );
 
 
      c.add(texte);
      c.add(nom);
      c.add(validation);
      c.add(images);
       
      c.add( etiquette );
       
      setSize( 350, 100 );

      setFocusable(true);
      addFocusListener(this);

      show();
 
   }
   
   public void focusGained(FocusEvent e) {
 
    }
 
    public void focusLost(FocusEvent e) {
 
    }

}
 
 
 
voila donc le focus n'agit pas avec ce code.
quelqu'un voit - il l'erreur?


Message édité par kungouf le 22-12-2004 à 14:08:05
Reply

Marsh Posté le 20-12-2004 à 11:11:33   

Reply

Marsh Posté le 20-12-2004 à 11:50:36    

j'ai fait un test, ca fonctionne pas dans ce cas precis avec la JFrame ainsi qui contient des sous Frame.
 
par contre, le focus fonctionne parfaitement avec une JFrame standard

Reply

Marsh Posté le 20-12-2004 à 14:48:38    

j'ai pas bien compris le problême. ton Focus listener ne reçoit pas les évenement c'est ca ?
 
remarque : mets ton code entre des balises [cpp ] [/cpp ] (bouton C/C++ dans l'interface de saisie)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-12-2004 à 11:44:48    

merci benou d'avoir reagit cependant j'ai trouve mon probleme.
de plus il fallait que j'herite d'un JDialog et non pas d'une JFrame pour appaler la methode setModal() afin d'obliger la saisie modale

Reply

Marsh Posté le 22-12-2004 à 12:05:01    

Et c'est quoi la réponse finale ?

Reply

Marsh Posté le 22-12-2004 à 14:07:38    

en resume, j'appelle le focus au moment de l'ouverture de la fenetre sur un element et ca fonctionne tres bien pour mettre le focus sur mon objet, j'utilise un JDialog et non plus une JFrame ce qui me permet d'appeler la methode setModal() pour eviter que le programme continue sans la saisie de donnee...
 
 
public LaClass extends JDialog implements FocusListener, ActionListener{
   ....
   nom.addFocusListener(this);
 
 
    ...
 
  //focus a l'ouverture de la JDialog sur le JTextField nom  
      addWindowListener( new WindowAdapter() {
        public void windowOpened( WindowEvent e ){
             nom.requestFocus();
          }
        } );
}


Message édité par kungouf le 22-12-2004 à 14:10:36
Reply

Sujets relatifs:

Leave a Replay

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