Swing JPasswordField

  • Themenstarter Themenstarter Gelöschtes Mitglied 64224
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 64224

Gast
Hallo kann mir wer helfen wie ich ein eingegebenes Passwort aus einem JPasswordField auslese und in ein Label ausgebe. Hab folgendes probiert:
pw=new JPasswordField();
pw.addCaretListener(this);
this.getContentPane().add(pw);

char[] cl= pw.getPassword();

l=new JLabel();
l.setBorder(border);

Wäre dankbar für hilfreiche Antworten
 
Du hast doch schon die getPassword Methode gefunden. Die gibt dir das Passwort doch schon als char Array zurück.

Einen String kannst Du z.B. mit Hilfe des String Konstruktors machen, der ein char Array nimmt, also
new String(pw.getPassword());

Ein komplettes, minimales Beispiel wäre da z.B.:
Java:
import javax.swing.*;
import java.awt.*;

public class SwingTest {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setLayout(new GridLayout(2,1));

        JPasswordField passwdField = new JPasswordField();
        passwdField.setSize(100, 50);
        frame.add(passwdField);

        JButton testButton = new JButton("Test");
        frame.add(testButton);
        testButton.addActionListener(e -> {
            testButton.setText(new String(passwdField.getPassword()));
        });
        frame.setVisible(true);
    }
}
Hier wird das Passwort ausgelesen und als Text des Buttons gesetzt ...
 
Moin,

>> Wäre dankbar für hilfreiche Antworten
es wäre auch hilfreich, zu beschreiben, was den nicht funktioniert!
So richtig schlecht sieht der Code jetzt nicht aus - außer dass ich mich frage, was hier in diesem zsammenhang die beiden letzten Zeilen machen!

Und nutze bitte IMMER die Code-Tags!!

VG Klaus
 
Moin,

>> Wäre dankbar für hilfreiche Antworten
es wäre auch hilfreich, zu beschreiben, was den nicht funktioniert!
So richtig schlecht sieht der Code jetzt nicht aus - außer dass ich mich frage, was hier in diesem zsammenhang die beiden letzten Zeilen machen!

Und nutze bitte IMMER die Code-Tags!!

VG Klaus
Das ist meine AUfgabe ist:
Ein Passwortfeld erzeugen. Die eingegebenen Zeichen werden unverschlüsselt in einem JLabel darunter angezeigt.
Ich habe versucht mit getPassword das Passwort zu bekommen und in char[] zu speichern aber weiß nicht wie ich das Passwort uverschlüsselt in einem LAbel abzeigen. Mit setTExt() habe ich es schon probiert.
 
Was genau hast Du probiert? Dein Code enthält kein setText sondern nur ein setBorder. Und ja, das sollte klappen. Aber bitte erst einen String draus machen....

Und das Beispiel von mir zeigt ja, wie Du einen String bekommst, denn Du dann per setText verwenden kannst. Ob du nun setText von einem Label oder von einem Button aufrufst: Das wird ja wohl nicht so viel Unterschied machen ...

Aber ändern wir das Beispiel entsprechend:
Java:
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setLayout(new GridLayout(3,1));

        JPasswordField passwdField = new JPasswordField();
        passwdField.setSize(100, 50);
        frame.add(passwdField);

        JButton testButton = new JButton("Test");
        frame.add(testButton);

        JLabel label = new JLabel("Huhu");
        frame.add(label);

        testButton.addActionListener(e -> {
            label.setText(new String(passwdField.getPassword()));
        });
        frame.setVisible(true);
    }
 
Was genau hast Du probiert? Dein Code enthält kein setText sondern nur ein setBorder. Und ja, das sollte klappen. Aber bitte erst einen String draus machen....

Und das Beispiel von mir zeigt ja, wie Du einen String bekommst, denn Du dann per setText verwenden kannst. Ob du nun setText von einem Label oder von einem Button aufrufst: Das wird ja wohl nicht so viel Unterschied machen ...

Aber ändern wir das Beispiel entsprechend:
Java:
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setLayout(new GridLayout(3,1));

        JPasswordField passwdField = new JPasswordField();
        passwdField.setSize(100, 50);
        frame.add(passwdField);

        JButton testButton = new JButton("Test");
        frame.add(testButton);

        JLabel label = new JLabel("Huhu");
        frame.add(label);

        testButton.addActionListener(e -> {
            label.setText(new String(passwdField.getPassword()));
        });
        frame.setVisible(true);
    }
Das passt zwar jetzt nicht zum Thema dazu, aber wenn ich eine checkbox habe,die das Vergrößern des JFrames durch Ziehen am Rand erlaubt oder verhindert. Da gibt es ja zwei Funktionen: public boolean isSelected() und public void setSelected(boolean b) muss ich dann in isSelected den Code reinschreiben, aber weiß nicht ganz wie oder im public void itemStateChanged(ItemEvent e)
 
Die Frage ist doch, was Du wie machen willst. Wie immer: Da erst einmal eine klare Antwort drauf finden. Dann kann man überlegen, wie Du die konkreten Anforderungen abbilden kannst...

Wenn die Checkbox geändert wird, dann soll das Fenster in der Größe änder bar werden oder eben nicht mehr sein.
==> Du musst also auf eine Veränderung der Checkbox reagieren.

Wenn Du auf die Veränderung reagierst, dann musst Du schauen:
- Wurde die Checkbox gesetzt? Ja / Nein ==> Entsprechend setzt Du dann, ob das Fenster in der Größe veränderbar ist.

Ist es das, was Du machen willst?

Veränderungen der CheckBox: https://javadoc.scijava.org/Java9/j...ActionListener-java.awt.event.ActionListener-

Ist die Checkbox gesetzt: https://javadoc.scijava.org/Java9/javax/swing/AbstractButton.html#isSelected--

Frame vergrößerbar machen oder nicht: Frame.setResizeable(boolean): https://docs.oracle.com/javase/9/docs/api/java/awt/Frame.html#setResizable-boolean-

Das wären die Bauteile, die dann wichtig werden...
 
Die Frage ist doch, was Du wie machen willst. Wie immer: Da erst einmal eine klare Antwort drauf finden. Dann kann man überlegen, wie Du die konkreten Anforderungen abbilden kannst...

Wenn die Checkbox geändert wird, dann soll das Fenster in der Größe änder bar werden oder eben nicht mehr sein.
==> Du musst also auf eine Veränderung der Checkbox reagieren.

Wenn Du auf die Veränderung reagierst, dann musst Du schauen:
- Wurde die Checkbox gesetzt? Ja / Nein ==> Entsprechend setzt Du dann, ob das Fenster in der Größe veränderbar ist.

Ist es das, was Du machen willst?

Veränderungen der CheckBox: https://javadoc.scijava.org/Java9/j...ActionListener-java.awt.event.ActionListener-

Ist die Checkbox gesetzt: https://javadoc.scijava.org/Java9/javax/swing/AbstractButton.html#isSelected--

Frame vergrößerbar machen oder nicht: Frame.setResizeable(boolean): https://docs.oracle.com/javase/9/docs/api/java/awt/Frame.html#setResizable-boolean-

Das wären die Bauteile, die dann wichtig werden...
Eine JCheckBox ("Resizable"), die das Vergrößern des JFrames durch Ziehen am Rand erlaubt oder verhindert. -->Mein Ziel

Java:
public void setSelected(boolean b) {
        if(c.isSelected()) {
            this.setResizable(false);
        }
        else {
            this.setResizable(true);
        }
    }
 
Eine JCheckBox ("Resizable"), die das Vergrößern des JFrames durch Ziehen am Rand erlaubt oder verhindert. -->Mein Ziel

Java:
public void setSelected(boolean b) {
        if(c.isSelected()) {
            this.setResizable(false);
        }
        else {
            this.setResizable(true);
        }
    }
Die Beschreibung ist sehr oberflächig und dementsprechend ist der Code (vermutlich) auch nicht das, was Du haben willst.

Ich habe ja eine etwas ausführlichere Beschreibung des Verhaltens gebracht und für die einzelnen Dinge auch entsprechend Verlinkt, was dazu genutzt werden könnte ... Der Prinzipielle Aufbau von Swing Anwendungen ist Dir bekannt? Mit den ActionListenern, mit denen auf Eingaben von Usern (z.B. User drückt einen Knopf) reagiert werden kann. Evtl. solltest Du mal ein paar Swing Tutorials von Anfang an durchgehen oder das Java ist auch eine Insel Buch bezüglich GUI durchgehen. Der wichtige Abschnitt fängt mit AWT an (Swing basiert auf AWT, daher bitte bei AWT anfangen zu lesen!).

Die Erläuterungen würden das Forum sprengen zumal ich bestimmt nicht mit jemandem mithalten kann, der ein ganzes Buch geschrieben hat (In Sache Strukturierung, Kontrolle der Angaben, Einarbeiten von Feedback und natürlich auch die Kontrolle durch Lektoren und co ...)
 
Die Beschreibung ist sehr oberflächig und dementsprechend ist der Code (vermutlich) auch nicht das, was Du haben willst.

Ich habe ja eine etwas ausführlichere Beschreibung des Verhaltens gebracht und für die einzelnen Dinge auch entsprechend Verlinkt, was dazu genutzt werden könnte ... Der Prinzipielle Aufbau von Swing Anwendungen ist Dir bekannt? Mit den ActionListenern, mit denen auf Eingaben von Usern (z.B. User drückt einen Knopf) reagiert werden kann. Evtl. solltest Du mal ein paar Swing Tutorials von Anfang an durchgehen oder das Java ist auch eine Insel Buch bezüglich GUI durchgehen. Der wichtige Abschnitt fängt mit AWT an (Swing basiert auf AWT, daher bitte bei AWT anfangen zu lesen!).

Die Erläuterungen würden das Forum sprengen zumal ich bestimmt nicht mit jemandem mithalten kann, der ein ganzes Buch geschrieben hat (In Sache Strukturierung, Kontrolle der Angaben, Einarbeiten von Feedback und natürlich auch die Kontrolle durch Lektoren und co ...)
Java:
    public void stateChanged(ChangeEvent e) {
        // TODO Auto-generated method stub
         //int value = s.getValue();
         this.getContentPane().setSize((500*500)*2);
    }
Aufgabe:
Ein JSlider der stufenlos den Frame bis zum doppelten Ausmaß vergrößert. Die Prozent der Vergrößerung werden in einem JLabel angezeigt.
Wie geht das ich habe es mit setSize und dann die Größe vom Frame mal 2 probiert, geht aber nicht
 
Dann schau Dir doch die Dokumentation von setSize an und schau, was da an Parametern möglich ist.

Ansonsten generell: Die Größe eines Panes ist eine zweidimensionale Sache. Also eine einzelne Zahl wird da kaum ein möglicher Parameter sein.
 

Zurück
Oben