J'ai un JPanel (nommé jpLigne) avec un JTextField et un JButton, non visible par défaut (pour faire simple).
Quand je clic sur le JTextField, je colore celui-ci pour faire un effet de sélection, donc sur le FocusGained de mon JTextField, et rend visible mon JButton.
Lorsque je clic sur mon JButton, j'aimerais avoir toujours le focus d'activer (du moins, la coloration) et l'action de mon actionPerformed du JButton, car dès que le JTextField a le focus, ça inhibe, du moins j'ai l'impression, le actionPerformed (je sais pas d'où ça vient).
Re,
Peut-être qu'un peu de code peut aider à la compréhension :
- Gestion des Focus (simplifier)
1 2 3 4 5 6 7 8 9 10
|
public void focusGained(FocusEvent arg0)
{
ColorSelect(true);
}
public void focusLost(FocusEvent arg0)
{
ColorSelect(false);
} |
Avec la méthode ColorSelect :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public void ColorSelect(boolean isFocusGained)
{
if(isFocusGained)
{
jtextfield.setBackground(new Color(234,68,152));
jtextfield.setForeground(Color.white);
jtextfield.setOpaque(true);
jbutton.setVisible(true);
}
else
{
jtextfield.setBackground(null);
jtextfield.setForeground(Color.black);
jtextfield.setOpaque(false);
jbutton.setVisible(false);
}
} |
où la méthode ColorSelect(boolean f) me fait ma coloration de fond et me permet de rendre mon bouton visible.
- Action de mon bouton
1 2 3 4
| public void actionPerformed(ActionEvent arg0)
{
jtextfield.settext("quelque chose");
} |
Lorsque je clic sur mon bouton, j'ai l'impression qu'il exécute le bloc du FocusLost avant mon actionPerformed (et donc ne fait rien coté clic du bouton), or il me faudrait qu'il execute mon bloc actionPerformed puis le FocusLost.
Partager