/ / Insérer du texte dans JTextfield sélectionné à l’aide de JButtons - java, swing, jbutton, jtextfield

Insérer du texte dans JTextfield sélectionné à l’aide de JButtons - java, swing, jbutton, jtextfield

J'ai plusieurs champs de texte et boutons

Champs de texte boutons

Lorsqu'un champ de texte est sélectionné, du texte doit y être ajouté lorsqu'un bouton est enfoncé.

C'est comme ça que j'ai essayé

import javax.swing.text.JTextComponent;
private void num9ActionPerformed(java.awt.event.ActionEvent evt) {
JTextComponent component = getFocuedComponent();
component.setText( component.getText() + "9" );

}

Mais cela n’a pas fonctionné pour moi.

PS Essayer de faire Matrix Calculator.

MODIFIER : pour référence ... C’est comme cela que je l’ai mis en œuvre ... après la réponse de SJuan76 .... merci !!

private JTextComponent selectedTextField;

// TextFields onFocus event
private void a33FocusGained(java.awt.event.FocusEvent evt) {
selectedTextField = (JTextComponent) evt.getSource();
}
// action for button
private void num9ActionPerformed(java.awt.event.ActionEvent evt) {
selectedTextField.setText( selectedTextField.getText() + "9" );

}

Réponses:

1 pour la réponse № 1

Vous ne spécifiez pas le problème, je vais donc deviner. Si vous voulez une meilleure réponse, donnez une meilleure question.

Lorsque vous cliquez sur le bouton, la focalisation du texte saisi a déjà été perdue (transférée à ce bouton).

Ajoutez un écouteur aux champs de texte qui mettent à jour une variable partagée, en pointant sur le dernier texte de sortie sélectionné. Lorsque vous traitez l'actionevent, mettez à jour ce composant.

Bien sûr, il y a le problème de la réinitialisation de la variable partagée lorsqu'elle n'a plus de sens.

MISE À JOUR: je pensais getFocusedComponent() faisait partie de l’API mais je n’y trouve aucune référence; vous devriez poster plus de code si vous voulez une bonne réponse.


1 pour la réponse № 2

Vous devez avoir le JTextComponent sélectionné en tant quemembre de la classe. Si vous enregistrez le composant sélectionné dans une variable locale (ce que je pense que vous faites), il ne se souviendra pas du composant sélectionné. Un exemple approximatif:

public class YourClass  implements ActionListener
{
private JTextComponent selectedTextField ;
....
void OnComponentSelected()
{
//init selectedTextField
}
void actionPerformed()
{
//   selectedTextField.setText(...);
}
}

0 pour la réponse № 3

Vous pouvez vous rappeler votre dernier sélectionné JTextComponent et changer son texte après avoir appuyé sur un bouton puis. Donc, vous ne comptez pas sur un composant ciblé. Vous pouvez vous en souvenir en écoutant les événements de la souris.