L'accès à Java Swing TextField de l'autre classe
J'ai un problème avec Java Swing de saisie de texte. J'ai une méthode inputData()
dans la classe A
et quand je l'appelle, la méthode doit attendre que l'utilisateur de remplir TextField input
dans la classe B
et appuyez sur ENTRÉE. Enfin, la méthode inputData()
devrait avoir le texte que l'utilisateur a écrit. Comment pourrais-je le résoudre?
class A {
B b = new B();
public A() {
inputData();
}
public char[] inputData() {
//there I would like to get text
//from TextField from class B
}
}
//-------------------------------
class B extends JFrame{
private JTexField input;
public B() {
}
private void inputKeyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) { //pressed ENTER
input.getText()
input.setText(null);
}
}
}
OriginalL'auteur Martynas | 2011-03-12
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas réellement envie d'un component swing jtextfield. Il semble que vous êtes en attente pour une ligne de l'entrée de l'utilisateur, qui doit vraiment être un JOptionPane. Comment faire ce qui est décrit ici:
http://download.oracle.com/javase/tutorial/uiswing/components/dialog.html#input
Fondamentalement, JOptionPane.showInputDialog() provoque une fenêtre pop-up qui contient un champ de texte et les boutons OK/Annuler, et si vous appuyez sur entrée, il va prendre votre entrée. Ceci élimine le besoin pour une autre classe.
Vous l'avais mis dans votre inputData() méthode:
Si ce n'est pas ce que vous cherchez et que vous voulez un champ de texte qui reste ouverte, peut-être ce que vous voulez vraiment est un bouton "Soumettre" à côté de votre component swing jtextfield qui permet à l'utilisateur de décider du moment de soumettre le texte. Dans ce cas, vous pourriez avoir:
OriginalL'auteur donnyton
TextField? Puisque c'est un Swing projet, j'espère que vous dire un component swing jtextfield, droit? Et ne pas ajouter un KeyListener, mais plutôt un ActionListener, puisque celles-ci sont déclenchées lorsque l'utilisateur appuie sur Entrée. Une façon de résoudre votre problème est de donner à l'interface graphique de la classe (ici nommé B) une méthode publique qui permettra à l'extérieur des classes pour ajouter un ActionListener à l'component swing jtextfield. Peut-être que vous pouvez l'appeler addActionListenerToInput(ActionListener auditeur). Puis la Classe Un pouvez ajouter l'écouteur à B, et la actionPerformed code sera appelée lorsque la touche entrée est pressée.
par exemple,
OriginalL'auteur Hovercraft Full Of Eels