wie man Wert auf TextField Java Swing
Habe ich eine einfache Java Swing-form mit JTextField
bekomme ich Wert auf JTextField
durch getText()
Methode, aber ich kann es nicht verwenden, zum Hauptprogramm. Können Sie mir helfen Was für ein problem und wie zu beheben? Das ist mein 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);
}
}
Vielen Dank!
- Java-GUIs haben könnte, die arbeiten auf einer Vielzahl von Plattformen, die auf verschiedenen Bildschirm-Auflösungen & mit verschiedenen PLAFs. Als solche sind Sie nicht förderlich für die genaue Platzierung der Komponenten. Organisieren Sie die Komponenten für eine robuste GUI, statt mit layout-Managern oder Kombinationen, zusammen mit layout-Polsterung & Grenzen für white-space.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht drucken Sie den Wert, bevor Benutzer auf die Schaltfläche klickt
Statt, Sie können dies tun, in der actionPerformed () - Methode,
Dies wird drucken Sie den Wert, geben Sie in das Textfeld
Den Sie drucken möchten, der name-Wert sofort nach der Vorführung Ihre GUI:
Aber dieser Wert ist nicht gesetzt, bis der Benutzer drückt die Schaltfläche "login":
Hinzufügen ein Textfeld, um eine GUI-Klasse nicht magisch fügen Sie ein
getText()
- Methode dieser Klasse. Ich meine, denken Sie darüber, wenn es zwei text-Felder, die verwendet werden soll fürgetText()
? Das Feld sollte erklärt werden, wie ein Attribut der Klasse und eine Methode definiert, diegetText()
des Feldes.BTW:
JTextField
wenn die GUI tatsächlich erfordert eineJPasswordField
.JFrame
dies dürfte wohl ein modalesJDialog
. Sehen Wie zu Verwenden Modalität in Dialogen für details.