comment obtenir la valeur sur TextField Java Swing
J'ai un simple Java Swing formulaire avec un JTextField
, j'obtiens la valeur sur JTextField
par getText()
méthode, mais je ne peux pas l'utiliser pour le programme principal. Pouvez-vous m'aider à Ce problème et comment le résoudre? C'est mon code :
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Login {
private String name;
public Login() {
JFrame main = new JFrame("LOGIN");
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setResizable(false);
main.setLayout(null);
main.setPreferredSize(new Dimension(200, 300));
main.setLocation(400, 200);
//Heading: LOGIN
JLabel heading = new JLabel("LOGIN");
heading.setBounds(80, 20, 50, 20);
main.add(heading);
//Label Username
JLabel username_label = new JLabel("username: ");
username_label.setBounds(5, 70, 80, 20);
main.add(username_label);
//Textfield Username
final JTextField username_field = new JTextField();
username_field.setBounds(70, 70, 120, 20);
main.add(username_field);
this.name = username_field.getText();
//Button Login
JButton loginBtn = new JButton("LOGIN");
loginBtn.setBounds(40, 150, 120, 25);
main.add(loginBtn);
main.pack();
main.setVisible(true);
loginBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
name = username_field.getText();
//System.out.println(name); //IT WORKS
}
});
}
public static void main(String[] args) {
Login me = new Login();
me.print();//I EXPECT IT WILL PRINT @name BUT NO, WHY?
}
public void print() {
System.out.println(name);
}
}
Merci beaucoup!
Java Interfaces utilisateur peut avoir à travailler sur un certain nombre de plates-formes, sur différentes résolutions d'écran & à l'aide de différents PLAFs. En tant que tels, ils ne sont pas propices à l'exact du placement des composants. D'organiser les composants d'un solide GUI, au lieu d'utiliser gestionnaires de disposition, ou combinaisons, avec la mise en page de rembourrage & frontières pour espace blanc.
OriginalL'auteur dientmUET | 2013-12-30
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas imprimer la valeur avant que l'utilisateur clique sur le bouton
Au lieu de cela, vous pouvez le faire dans actionPerformed() la méthode,
Cela affichera la valeur, vous entrez dans votre champ de texte
Vous êtes les bienvenus 🙂
OriginalL'auteur Keerthivasan
Vous essayez d'imprimer le nom de la valeur immédiatement après la présentation de votre interface:
Mais cette valeur n'est pas définie jusqu'à ce que l'utilisateur appuie sur le bouton de connexion:
OriginalL'auteur Duncan Jones
Ajout d'un champ texte d'une interface graphique de classe n'est pas la baguette magique pour ajouter un
getText()
méthode de cette classe. Je veux dire, pensez-y, si il y avait deux les champs de texte qui doit être utilisé pourgetText()
? Le champ doit être déclaré comme un attribut de la classe, et une méthode quigetText()
de ce champ.BTW:
JTextField
lorsque l'interface utilisateur nécessite en réalité unJPasswordField
.JFrame
cela devrait probablement être une modaleJDialog
. Voir Comment Utiliser la Modalité dans les boîtes de dialogue pour plus de détails.OriginalL'auteur Andrew Thompson