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

  FORUM HardWare.fr
  Programmation
  Java

  Problème de focus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de focus

n°711262
souliane
Posté le 28-04-2004 à 19:15:23  profilanswer
 

Bonjour, quand je lance ma classe Tetris (ci-dessous) je n'arrive pas à donner le focus à mon JPanel game... Comment faire ?
 
Ca marchait avant quand je travaillais sur une applet mais depuis que j'essaie de la transformer en application, marche plus...
 
 
import javax.swing.JFrame;
 
public class Tetris
{
  public static void main(String[] args)
  {
  JFrame frame = new JFrame();
  frame.show();
  frame.resize(800, 600);
  frame.validate();
 
  Game game = new Game();
  frame.getContentPane().add(game);
  game.requestFocus();        // J'essaie les deux
  game.requestFocusInWindow();    // mais ca marche pas...
  }
}
 
import javax.swing.JPanel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
class Game extends JPanel implements KeyListener
{
  public void keyPressed(KeyEvent e)
  {
  int key = e.getKeyCode();
  System.out.println(key);
  }
  public void keyReleased(KeyEvent event) {;}
  public void keyTyped(KeyEvent event) {;}
}

mood
Publicité
Posté le 28-04-2004 à 19:15:23  profilanswer
 

n°713274
veryfree
Posté le 30-04-2004 à 22:55:52  profilanswer
 

je crois que tu le fait dans le désordre:
 
tu ajoute tes composants ENSUITE tu affiche ta frame ;)
une fois affiché fait appel game.requestFocus();  
normalement ca doit etre bon

n°713296
souliane
Posté le 30-04-2004 à 23:27:01  profilanswer
 

On m'a dit qu'il fallait mettre un setFocusable() quelque part car par défaut les JPanel ne peuvent pas prendre le focus. J'ai fait comme ça et ça a marché, mais merci tout de même pour ta réponse :)

n°814387
patachou
Posté le 04-08-2004 à 01:18:30  profilanswer
 

Moi j'ai un autre problème de focus avec les boites de dialogues modale que je ne comprends pas.
Voici le code de Test que j'ai :

Code :
  1. import javax.swing.JFrame;
  2. import javax.swing.JDialog;
  3. import javax.swing.JButton;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.FlowLayout;
  7. public class Test extends JFrame implements ActionListener
  8. {
  9.   private JDialog jd;
  10.   public Test()
  11.   {
  12.     super ("test" );
  13.     setBounds(200, 100, 500, 500);
  14.     setVisible(true);
  15.     jd = new JDialog (this, true);
  16.     jd.getContentPane ().setLayout(new FlowLayout ());
  17.     JButton but = new JButton ("OK" );
  18.     but.addActionListener(this);
  19.     jd.getContentPane().add(but);
  20.     JButton but2 = new JButton ("Annuler" );
  21.     but2.addActionListener(this);
  22.     jd.getContentPane().add(but2);
  23.     jd.setBounds(200, 100, 400, 400);
  24.     but2.setFocusable(true);
  25.     jd.setVisible(true);
  26.     //jd.show ();
  27.     if (but2.requestFocusInWindow())
  28.       System.out.println("Request possible" );
  29.     else
  30.       System.out.println("Request impossible" );
  31.     //jd.setModal(true);  
  32.   }
  33.  
  34.   public void actionPerformed(ActionEvent e)
  35.   {
  36.     System.out.println("action performed" );
  37.     jd.dispose();
  38.   }
  39.   public static void main(String[] args)
  40.   {
  41.     Test test1 = new Test();
  42.   }
  43. }


 
Le but de cette classe et de mettre le focus sur le bouton Annuler.
Pour pouvoir mettre le focus sur un composant il faut que celui si soit visible, c'est pourquoi le code pour mettre le bouton Annuler est après la ligne jd.setVisible (true). Le problème c'est que si on fait ca sur une boite de dialogue modale, tout ce qui suit est bloqué tant qu'on a pas fait appel à dispose () ou hide ()... La ligne qui affiche soit request possible ou request impossible s'affiche qu'apres l'appel à action perfermed...
Donc comment faire pour afficher la boite de dialogue modale pour mettre le focus sur le bouton Annuler ??????
J'ai essayé de créer une boite non modale, de la mettre visible, de mettre le focus sur le bon bouton et apres faire appel à setModal (), mais la boite de dialogue reste non modale...
J'ai essayé plusieurs choses, je n'ai pas trouvé de solution, quelqu'un peut m'aider ???
 
Merci

n°817555
patachou
Posté le 08-08-2004 à 18:52:45  profilanswer
 

Pas de suggestion ?


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

  Problème de focus

 

Sujets relatifs
Probleme avec un selectProbleme permutation ligne tableau
[PHP]Problème d'insertion bizarre [resolu]Probleme de compilation
Probleme PHP et Requeteproblème de requête
Je réalise un petit jeu et j'ai un problème de focus avec l'appletProblème de focus... [Résolu] -- Script à emporter tout chaud...
[Perl/Tk] Probleme de focus[Perl/Tk] probleme de focus
Plus de sujets relatifs à : Problème de focus


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