Bonjour,
J'ai intégré une JTable dans un JOptionPane, et souhaite que la table obtienne le focus dès l'affichage du dialogue. Cela est-il possible ?
D'avance merci.
Bonjour,
J'ai intégré une JTable dans un JOptionPane, et souhaite que la table obtienne le focus dès l'affichage du dialogue. Cela est-il possible ?
D'avance merci.
j'ai réglé ce problème de la maniere suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public JTableDb(){ // Bug du jtable ne récupere pas le focus this.addAncestorListener( new AncestorListener(){ public void ancestorAdded(AncestorEvent e){ requestFocus(); } public void ancestorMoved(AncestorEvent arg0) {} public void ancestorRemoved(AncestorEvent arg0) {} }); }
Pour le détail jtabldb est un extends de JTable this est un donc un jtable cette méthode inline est positionnée dans le constructeur.
et le rapport avec le JOptionPane ?
par exemple, je l'affiche avec:
Comment indiquer que la JTable contenue doit avoir le focus ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part dialog.setVisible(true);
pour le rapport avec le JOptionPane je ne sais pas.
Par définition, sans autre précision, c'est le premier composant ajouté dans un panel qui détient le focus cela fonctionne pour la majorité des composants sauf le JTable qui semble rétif.
De plus jtable.requestFocus()/jtable.RequestFocusInWindow() ne fonctionne pas toujours. cela doit peut-être dépendre du context. Dans le cadre de mon appli j'ai constaté qu'immédiatement aprés l'instanciation d'une fenetre le positionnement du focus sur le jtable ne marchait pas, puis suite à un click sur un composant de ma fenêtre cela fonctionne.
J'ai pompé ce code sur un forum de sun. il m'a semblé pouvoir correspondre au bug que je rencontrais : le jtable s'ecoute lui même et demande le focus lorsqu'il est ajouté dans un panel. en l'occurence cela à réglé mon probléme.
Le plus simple c'est de tester ce code, pour ma part je n'ai pas cherché plus loin !
sinon http://bugs.sun.com/bugdatabase/view...bug_id=5018574 cela peut te donner une piste ?
heu c'est quoi qui marche le code ou le le lien qui référence à ton problème ?
Le lien avec ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 dlgLOV = jop.createDialog(this, sTitle); dlgLOV.addComponentListener(new ComponentAdapter(){ public void componentShown(ComponentEvent e){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ jp.requestFocusInWindow(); table.requestFocus(); } }); } });
Partager