Swing JTextField auslesen Klassen übergreifend

Soloeco

Aktives Mitglied
Hey,
ich habe in de noch folgenden Code eine Art Passwort Fenster erstellt und mein nächstes Ziel ist es nun erst einmal, dass wenn man einen bestimmten Usernamen und ein bestimmtes Passwort eingibt und dann auf "OK" klickt das Fenster geschlossen und ein neues geöffnet wird.
Das mit den Fenstern an sich bekomme ich hin, nur ich weiß nicht ganz wie ich nun die Eingabe des JTextFields auslesen und vergleichen kann mit dem Usernamen/Passwort was ich vorher festgelegt habe.

Das hier ist das Fenster was sich zuerst öffnet mit dem Username etc.:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;

public class DemoFrame extends JFrame {
   
    public DemoFrame(ActionListener listener) {
        setTitle("Ein Fenster mit einem Layout");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
       
        //title
        JLabel titleLabel = new JLabel("Password Access");
        add(titleLabel, BorderLayout.NORTH);
        titleLabel.setHorizontalAlignment(JLabel.CENTER);
        titleLabel.setBorder(BorderFactory.createEmptyBorder(20,0,20,0));
       
        //main
        JPanel main = new JPanel();
        add(main, BorderLayout.CENTER);
        main.setLayout(new GridLayout(2,2));
       
        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        main.add(p1);
        main.add(p2);
       
        JLabel l1 = new JLabel("Username:");
        JTextField tf1 = new JTextField(12);
        p1.add(l1);
        p1.add(tf1);
       
        JLabel l2 = new JLabel("Password:");
        JTextField tf2 = new JTextField(12);
        p2.add(l2);
        p2.add(tf2);
       
        //buttons
        JPanel buttons = new JPanel();
        add(buttons, BorderLayout.SOUTH);
       
        JButton okButton = new JButton("OK");
        JButton closeButton = new JButton("CLOSE");
       
        buttons.add(okButton);
        buttons.add(closeButton);
       
        okButton.addActionListener(listener);
        closeButton.addActionListener(listener);
       
        //left side panel
        JLabel leftSideLabel = new JLabel("<html>Denke an ein sicheres Passwort!<p/>Nur so kann die Sicherheit gewährleistet werden.<p/>Nutzen sie auch Sonderzeichen.</html>");
        add(leftSideLabel, BorderLayout.WEST);
       
        //right side panel
        JLabel rightSideLabel = new JLabel("<html>Nur ein leeres Label zum Testen.<p/>Wollte mal gucken wie das dann so aussieht.</p> Also so im Ganzen meine ich.</html>");
        add(rightSideLabel, BorderLayout.EAST);
       
        pack();
    }
}

Und das hier ist der Code wo ich festlege was passieren soll:

Java:
import javax.swing.*;
import java.awt.event.*;

public class Action implements ActionListener {
   
    private DemoFrame frame;
    private MainFrame mainFrame;
   
    public void startGUI() {
        frame = new DemoFrame(this);
        frame.setVisible(true);
    }
   
    public void startGUI2() {
        mainFrame = new MainFrame(this);
        mainFrame.setVisible(true);
    }
   
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
       
        if (command.equals("OK")) {
            System.out.println("Your password is correct!");
            frame.dispose();
            startGUI2();   
        }
        else if (command.equals("CLOSE")) {
            frame.dispose();
        }
    }
}

Dazu habe ich noch eine Klasse "Launcher" die den Konstruktor enthält und eine Klasse "MainFrame" für das zweite Fenster, dass nach korrekter Eingabe geöffnet werden soll.

Ich habe dazu bereits mit getText().equal("passwort") versucht nur bin ich da gescheitert :D
Würde mich freuen wenn mir jemand dabei weiter helfen kann!
Freundliche Grüße
 

Soloeco

Aktives Mitglied
Ich stehe wohl gerade auf dem Schlauch, wie denn global machen? Und wie geht es dann weiter?
 
Zuletzt bearbeitet:

Blender3D

Top Contributor
Code:
public class DemoFrame extends JFrame {
      private JTextField tf2 = new JTextField(12);
  
     public DemoFrame(ActionListener listener) {
....


public String getPassWord(){
    return tf2.getText();
}
Du solltest die benötigten Textfelder als Klassen Variabel anlegen. Und eine Gettermethode zur Verfügung stellen.
 

Soloeco

Aktives Mitglied
Also die Klassen Variablen habe ich nun angelegt. In welche Klasse müssen denn nun die Gettermethoden? Aktuell habe ich die in der DemoFrame Klasse, doch dann bekomme ich in der Action Klasse den Fehler "The method getUserName() is undefined for the type Action".
 

Blender3D

Top Contributor
Code:
@Override
     public void actionPerformed(ActionEvent e) {
         String command = e.getActionCommand();
       
         if (command.equals("OK")) {

         String enterdPass = frame.getPassWord();
        ...
So könntest du dann auf den eingegebenen Text zugreifen.
Tipp: benutze bessere Namen für Deine Variablen.
z.B. JTextField password statt tf2.
Das macht Deinen Code viel leserlicher.
:)
 

Blender3D

Top Contributor
Da sich das Textfield in Demoframe befindet gehört die Getter natürlich in diese Klasse, weil du ja auf dessen Member das Textfield zugreifen willst.
Wichtig mache sie public
 

Soloeco

Aktives Mitglied
Perfekt, danke an euch beide und auch für deinen Tipp mit den Variablen Namen @Blender3D ! Letztendlich klappt es nun nun folgendem Code:

Java:
    //action command password access
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
       
        if (command.equals("OK")) {
            String userName = frame.getUserName();
            if (userName.equals("hs-owl")) {
                System.out.println("Your Username is correct!");
                frame.dispose();
                startGUI2();
            }
            else {
                System.out.println("Username incorrect!");
            }
        }
        else if (command.equals("CLOSE")) {
            frame.dispose();
        }
    }
 

VfL_Freak

Top Contributor
Moin,
Letztendlich klappt es nun nun folgendem Code:
Java:
    //action command password access
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
      
        if (command.equals("OK")) {
            String userName = frame.getUserName();
            if (userName.equals("hs-owl")) {
                System.out.println("Your Username is correct!");
                frame.dispose();
                startGUI2();
            }
            else {
                System.out.println("Username incorrect!");
            }
        }
        else if (command.equals("CLOSE")) {
            frame.dispose();
        }
    }
Mal dumm gefragt, da sowohl anfangs als auch hier vom Passwort die Rede ist:
Du startest also das GUI sobald 'nur' der korrekte Username eingegeben wird :eek: ??

Gruß Klaus
 

Soloeco

Aktives Mitglied
Hallo,
@VfL_Freak Nein nicht ganz,ich starte es wenn Username und Password richtig eingegeben wurden, also beides muss richtig sein.

@HStein52 Ja ich weiß es gibt ein spezielles Textfeld für Passwörter in Swing, das war bisher einfach so zum ausprobieren.
 

Soloeco

Aktives Mitglied
Achso entschuldige, zu dem Zeitpunkt hatte ich es nur für den Username gemacht. Hier aber nun auch mit dem Password:

Java:
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
      
        if (command.equals("OK")) {
            String userName = frame.getUserName();
            String userPassWord = frame.getPassWord();
            if (userName.equals("hs-owl") && userPassWord.equals("abc")) {
                frame.dispose();
                startGUI2();
            }
            else {
                System.out.println("Username incorrect!");
            }
        }
        else if (command.equals("CLOSE")) {
            frame.dispose();
        }
 

VfL_Freak

Top Contributor
Moin,

da wir nicht wissen können, was frame.getUserName() und frame.getPassWord() machen:
- was passiert denn?
- sind userName und userPassWord korrekt gefüllt?
- wird etwa "Username incorrect!" zurückgegeben?
- BTW: was wird wohl ausgegeben, wenn das Passwort nicht korrekt ist?

Fragen über Fragen ...

Gruß Klaus
 

Soloeco

Aktives Mitglied
Also eigentlich ging es in diesem Beitrag nur um meine Frage, wie man ein JTextField auslesen kann (Klassen übergreifend) und die Antwort gibt es ja bereits.

public String getPassWord(){
return tf2.getText();
}

Mit den beiden Methoden frame.getUserName() und frame.getPassWord() kann ich die beiden JTextFields, die ich erzeugt hab in GUI1, auslesen und bekomme eine Rückgabe geliefert.

Java:
    public String getUserName() {
        return tf1.getText();
    }
    public String getPassWord() {
        return tf2.getText();
    }

Damit ich diese Methoden auch in einer anderen Klasse nutzen kann habe ich die JTextFields, in der Klasse DemoFrame, global gesetzt mit:

Java:
private JTextField tf1 = new JTextField(12);
    private JTextField tf2 = new JTextField(12);

Nachdem ich die JTextFields ausgelesen habe kann ich nun die Eingabe mit dem gesetzten Username und Password vergleichen, falls die Eingabe korrekt ist wird GUI1 geschlossen und GUI2 (ein neues Fenster) gestartet. Falls dies nicht der Fall ist, also eine der beiden Eingaben falsch ist, wird ein Fehler ausgegeben. Ja mir ist bewusst, dass dort in meinem Code bisher nur "Username incorrect" ausgegeben wird, den Rest, falls entweder eine der beiden Eingaben oder sogar beide falsch eingegeben werden, muss ich noch passend einfügen. Aber wie gesagt, eigentlich ging es mir nur um die Frage wie man das TextField ausliest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
J JTextField auslesen lassen AWT, Swing, JavaFX & SWT 4
K Text vom JTextField auslesen AWT, Swing, JavaFX & SWT 9
M Swing JTextField "onthefly" auslesen und berechnen AWT, Swing, JavaFX & SWT 7
S JTextField auslesen AWT, Swing, JavaFX & SWT 2
A Auslesen eines JTextField AWT, Swing, JavaFX & SWT 3
M JTextField auslesen und Wert vergleichen? AWT, Swing, JavaFX & SWT 2
I JTextField auslesen AWT, Swing, JavaFX & SWT 8
P Text aus JTextField auslesen und Buchstaben ersetzen AWT, Swing, JavaFX & SWT 2
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
H Swing Wie Fokus von JTextField entfernen? AWT, Swing, JavaFX & SWT 9
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
G JTextField Änderungen überprüfen AWT, Swing, JavaFX & SWT 4
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
J 100% CPU Last mit JTextField AWT, Swing, JavaFX & SWT 2
U Swing JTextField aus dem Editmodus nehmen AWT, Swing, JavaFX & SWT 1
Q-bert JTextField per Mausklick einfügen AWT, Swing, JavaFX & SWT 3
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
BobbGott durchsichtiges JTextField mit Hintergrund AWT, Swing, JavaFX & SWT 12
L Swing JTextField nicht sichtbar AWT, Swing, JavaFX & SWT 1
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
N Swing Jtextfield und Ausgabe von Wärungsbeträgen AWT, Swing, JavaFX & SWT 3
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
B jTextfield Übergabe des Strings AWT, Swing, JavaFX & SWT 16
P JTextField unsichtbar machen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
C Swing JTextField Funktion zuweisen - Löschen von Buchstaben/Sonderzeichen AWT, Swing, JavaFX & SWT 6
S JTextField parameter unveränderlich AWT, Swing, JavaFX & SWT 9
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
N Cursor im JTextField AWT, Swing, JavaFX & SWT 6
A JTextField und JButtons AWT, Swing, JavaFX & SWT 2
T jTextField mit String befüllen AWT, Swing, JavaFX & SWT 1
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
S Bekomme bein Buttonklick das Jtextfield nicht ausgegeben AWT, Swing, JavaFX & SWT 8
Seikuassi Swing JTextField nimmt kein Einfügen (Strg+V) an AWT, Swing, JavaFX & SWT 4
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
B Swing JTextField mit Bildschirmauflösung skalieren lassen. AWT, Swing, JavaFX & SWT 4
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
T AWT JTextfield verschwindet AWT, Swing, JavaFX & SWT 10
dat_vin KeyEvent jTextField AWT, Swing, JavaFX & SWT 12
C JTextfield ohne Enter feuern AWT, Swing, JavaFX & SWT 8
W Swing JTextField nur für Integer AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
F Swing JTextField (unbeschriebbar machen) AWT, Swing, JavaFX & SWT 12
W JTextfield - Wert lässt sich nicht setzen AWT, Swing, JavaFX & SWT 3
TheJavaKid JTextField: Reine Domain herausfiltern, sonst Inhalt löschen AWT, Swing, JavaFX & SWT 1
R Swing User tippt in unsichtbares JTextField AWT, Swing, JavaFX & SWT 3
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
U Swing JTextField zur Laufzeit auf Eingaben prüfen AWT, Swing, JavaFX & SWT 0
X Swing JTextField AWT, Swing, JavaFX & SWT 4
M Swing JTextField nicht ausfüllbar AWT, Swing, JavaFX & SWT 8
C Problem mit JTextField AWT, Swing, JavaFX & SWT 4
S Swing WYSIWYG JTextField AWT, Swing, JavaFX & SWT 2
vodkaz JTextField && Strings AWT, Swing, JavaFX & SWT 2
R Swing JScrollBar mit JTextField koppeln AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
R Swing JTextField getText() liefert leeren String AWT, Swing, JavaFX & SWT 6
J Mausfarbe ändern JTextField AWT, Swing, JavaFX & SWT 6
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
A editable JTextField & setText AWT, Swing, JavaFX & SWT 2
O Swing JTextField Sync View -> Model AWT, Swing, JavaFX & SWT 3
K JTextField mit Standardtext AWT, Swing, JavaFX & SWT 3
F Swing JTextfield Beispieltext soll nach Klick verschwinden AWT, Swing, JavaFX & SWT 3
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
I Swing JTextField ausblenden -? AWT, Swing, JavaFX & SWT 6
0 Swing JTextField - Position ? AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
M Swing jTextfield und PlainDocument AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben