J'ai une page HTML contenant un formulaire avec des champs textes et
une applet avec un composant JComboBox. Je souhaite pouvoir naviguer
entre ces composants avec la touche TAB. Le passage des champs(INPUT
type='text') du formulaire vers l'applet ne me pose pas de problème,
j'utilise le tag TABINDEX. Par contre je n'arrive pas à aller de
l'applet vers les champs du formulaire. J'ai essayé de récupérer
l'événement de la touche TAB avec un KeyListener mais sans succès.
Quelqu'un aurait une proposition à me faire?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
matthieu
(M) wrote in message news:...
J'ai une page HTML contenant un formulaire avec des champs textes et une applet avec un composant JComboBox. Je souhaite pouvoir naviguer entre ces composants avec la touche TAB. Le passage des champs(INPUT type='text') du formulaire vers l'applet ne me pose pas de problème, j'utilise le tag TABINDEX. Par contre je n'arrive pas à aller de l'applet vers les champs du formulaire. J'ai essayé de récupérer l'événement de la touche TAB avec un KeyListener mais sans succès. Quelqu'un aurait une proposition à me faire?
public class MyApplet extends JApplet { JTextField inputLine;
public MyApplet() { inputLine = new JTextField(20); setHtmlForNextComponent(inputLine); this.getContentPane().add(inputLine); }
public void setHtmlForNextComponent(JComponent component) { // L'appui sur la touche TAB doit transférer le // focus à un composant de la page html component.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_TAB) { transferFocus(MyApplet.this); } } });
component.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { JComponent comp = (JComponent) e.getSource(); // Desactive la touche tab pour le focus // pour pouvoir récupérer l'événement au travers // du KeyListener comp.setFocusTraversalKeysEnabled(false); }
public void focusLost(FocusEvent e) { JComponent comp = (JComponent) e.getSource(); // Desactive la touche tab pour le focus // pour pouvoir revenir sur le composant // dans le cycle de focus de la page html comp.setFocusTraversalKeysEnabled(true); } }); }
/** * Transfère le focus à la page html via l'appel d'une * fonction javascript * @param applet L'applet courante */ public void transferFocus(Applet applet) { // JSObject -> dans plugin.jar de la JRE JSObject window = JSObject.getWindow(applet); window.eval("focusAfterApplet()"); } }
######## # HTML # ########
<html> <head> <title>Test applet</title> </head> <script> function focusAfterApplet() { document.form.text1.focus(); } </script> <body> <APPLET name="applet" code="MyApplet.class" width="130" height="28" align="baseline" tabindex="1"> No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!! </APPLET> <form name='form'> <input type='text' name='text1' value='text1' tabindex=2/><br> <input type='text' name='text2' value='text2'tabindex=3/> </form> </body> </html>
Le transfert de focus Applet->Formulaire se fait au travers de l'appel de la fonction javascript focusAfterApplet() lorsque l'événement d'appui sur la touche TAB a été récupéré dans l'applet.
Le transfert de focus Formulaire->Applet se fait automatiquement grace à l'attribut "tabindex". Il faut s'assurer que la touche TAB a été activée sur le composant via la méthode setFocusTraversalKeysEnabled(true).
matthieu@sprunck.com (M) wrote in message news:<62af264e.0502110804.4c62ba8d@posting.google.com>...
J'ai une page HTML contenant un formulaire avec des champs textes et
une applet avec un composant JComboBox. Je souhaite pouvoir naviguer
entre ces composants avec la touche TAB. Le passage des champs(INPUT
type='text') du formulaire vers l'applet ne me pose pas de problème,
j'utilise le tag TABINDEX. Par contre je n'arrive pas à aller de
l'applet vers les champs du formulaire. J'ai essayé de récupérer
l'événement de la touche TAB avec un KeyListener mais sans succès.
Quelqu'un aurait une proposition à me faire?
public class MyApplet extends JApplet {
JTextField inputLine;
public MyApplet() {
inputLine = new JTextField(20);
setHtmlForNextComponent(inputLine);
this.getContentPane().add(inputLine);
}
public void setHtmlForNextComponent(JComponent component) {
// L'appui sur la touche TAB doit transférer le
// focus à un composant de la page html
component.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_TAB) {
transferFocus(MyApplet.this);
}
}
});
component.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
JComponent comp = (JComponent) e.getSource();
// Desactive la touche tab pour le focus
// pour pouvoir récupérer l'événement au travers
// du KeyListener
comp.setFocusTraversalKeysEnabled(false);
}
public void focusLost(FocusEvent e) {
JComponent comp = (JComponent) e.getSource();
// Desactive la touche tab pour le focus
// pour pouvoir revenir sur le composant
// dans le cycle de focus de la page html
comp.setFocusTraversalKeysEnabled(true);
}
});
}
/**
* Transfère le focus à la page html via l'appel d'une
* fonction javascript
* @param applet L'applet courante
*/
public void transferFocus(Applet applet) {
// JSObject -> dans plugin.jar de la JRE
JSObject window = JSObject.getWindow(applet);
window.eval("focusAfterApplet()");
}
}
########
# HTML #
########
<html>
<head>
<title>Test applet</title>
</head>
<script>
function focusAfterApplet() {
document.form.text1.focus();
}
</script>
<body>
<APPLET
name="applet"
code="MyApplet.class"
width="130"
height="28"
align="baseline"
tabindex="1">
No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
</APPLET>
<form name='form'>
<input type='text' name='text1' value='text1' tabindex=2/><br>
<input type='text' name='text2' value='text2'tabindex=3/>
</form>
</body>
</html>
Le transfert de focus Applet->Formulaire se fait au travers de l'appel
de la fonction javascript focusAfterApplet() lorsque l'événement
d'appui sur la touche TAB a été récupéré dans l'applet.
Le transfert de focus Formulaire->Applet se fait automatiquement grace
à l'attribut "tabindex". Il faut s'assurer que la touche TAB a été
activée sur le composant via la méthode
setFocusTraversalKeysEnabled(true).
J'ai une page HTML contenant un formulaire avec des champs textes et une applet avec un composant JComboBox. Je souhaite pouvoir naviguer entre ces composants avec la touche TAB. Le passage des champs(INPUT type='text') du formulaire vers l'applet ne me pose pas de problème, j'utilise le tag TABINDEX. Par contre je n'arrive pas à aller de l'applet vers les champs du formulaire. J'ai essayé de récupérer l'événement de la touche TAB avec un KeyListener mais sans succès. Quelqu'un aurait une proposition à me faire?
public class MyApplet extends JApplet { JTextField inputLine;
public MyApplet() { inputLine = new JTextField(20); setHtmlForNextComponent(inputLine); this.getContentPane().add(inputLine); }
public void setHtmlForNextComponent(JComponent component) { // L'appui sur la touche TAB doit transférer le // focus à un composant de la page html component.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_TAB) { transferFocus(MyApplet.this); } } });
component.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { JComponent comp = (JComponent) e.getSource(); // Desactive la touche tab pour le focus // pour pouvoir récupérer l'événement au travers // du KeyListener comp.setFocusTraversalKeysEnabled(false); }
public void focusLost(FocusEvent e) { JComponent comp = (JComponent) e.getSource(); // Desactive la touche tab pour le focus // pour pouvoir revenir sur le composant // dans le cycle de focus de la page html comp.setFocusTraversalKeysEnabled(true); } }); }
/** * Transfère le focus à la page html via l'appel d'une * fonction javascript * @param applet L'applet courante */ public void transferFocus(Applet applet) { // JSObject -> dans plugin.jar de la JRE JSObject window = JSObject.getWindow(applet); window.eval("focusAfterApplet()"); } }
######## # HTML # ########
<html> <head> <title>Test applet</title> </head> <script> function focusAfterApplet() { document.form.text1.focus(); } </script> <body> <APPLET name="applet" code="MyApplet.class" width="130" height="28" align="baseline" tabindex="1"> No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!! </APPLET> <form name='form'> <input type='text' name='text1' value='text1' tabindex=2/><br> <input type='text' name='text2' value='text2'tabindex=3/> </form> </body> </html>
Le transfert de focus Applet->Formulaire se fait au travers de l'appel de la fonction javascript focusAfterApplet() lorsque l'événement d'appui sur la touche TAB a été récupéré dans l'applet.
Le transfert de focus Formulaire->Applet se fait automatiquement grace à l'attribut "tabindex". Il faut s'assurer que la touche TAB a été activée sur le composant via la méthode setFocusTraversalKeysEnabled(true).