tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Fabio Hellmann
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
241
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo zusammen,

    steh' leider gerade auf dem Schlauch - ich versuche gerade eine Maske mit zwei JPasswordFields zu basteln ...
    Code java:
    1
    2
    
    public JPasswordField fPW_1 = new JPasswordField( 10 );
    public JPasswordField fPW_2 = new JPasswordField( 10 );

    Jetzt sagt mir die API, das der übergebenen Integer-Wert "die Anzahl der Spalten" darstellt, was aber scheinbar, wie ich vorhin feststellen musste, mitnichten die maximale Anzahl einzugebender Zeichen ist ...
    Frage (1) : von was für Spalten ist denn hier die Rede?

    Ich habe dann versucht, die Länge über einen KeyEventListener zu regeln :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    void fPW_1_keyReleased( KeyEvent e ) 
    {
        if( fPW_1.getPassword().length == 10 ) 
        {
             Toolkit.getDefaultToolkit().beep();
     
             // #####################################################################
             // hier möchte ich die weitere Eingabe unterbinden oder - besser noch - gleich mit dem Cursor zu fPW_2 springen !!
             // #####################################################################
        }
    } // fPW_1_keyReleased

    Frage (2) :
    siehe Kommentar !

    Danke und Gruß
    Klaus
    Geändert von vfl_freak (23.08.11 um 15:48 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    also eigentlich sollte die Zahl im Konstruktor schon die Begrenzung der Passwordlänge beschränken. Außer ich verstehe hier irgendetwas nicht richtig.

    Du kannst die Passwordlänge aber auch noch so beschränken:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    
    import java.awt.GridLayout;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
     
    public class JPassword extends JPanel
    {
        private final JPasswordField fPW_1;
        private final JPasswordField fPW_2;
     
        public JPassword(final int maxLength) {
            super(new GridLayout(0, 1));
     
            this.fPW_1 = new JPasswordField(10);
            fPW_1.addKeyListener(new KeyAdapter()
            {
                private int pwLength = 0;
     
                @Override
                public void keyPressed(KeyEvent e) {
                    if(KeyEvent.VK_BACK_SPACE == e.getKeyCode()) {
                        System.out.println("remove char");
                        if(pwLength > 0) {
                            pwLength--;
                        }
                    } else if(pwLength < maxLength) {
                        System.out.println("add char");
                        pwLength++;
                    } else {
                        char[] password = fPW_1.getPassword();
                        fPW_1.setText(new String(cutPw(password, maxLength)));
                        System.out.println("max chars reached");
                        fPW_2.requestFocus();
                    }
                }
            });
            add(fPW_1);
            
            this.fPW_2 = new JPasswordField(10);
            fPW_2.addKeyListener(new KeyAdapter()
            {
                private int pwLength = 0;
     
                @Override
                public void keyPressed(KeyEvent e) {
                    if(KeyEvent.VK_BACK_SPACE == e.getKeyCode()) {
                        System.out.println("remove char");
                        if(pwLength > 0) {
                            pwLength--;
                        }
                    } else if(pwLength < maxLength) {
                        System.out.println("add char");
                        pwLength++;
                    } else {
                        char[] password = fPW_2.getPassword();
                        fPW_2.setText(new String(cutPw(password, maxLength)));
                        System.out.println("max chars reached");
                        fPW_1.requestFocus();
                    }
                }
            });
            add(fPW_2);
        }
     
        private char[] cutPw(char[] pw, int maxLength) {
            int pwLength = maxLength;
            if(pw.length < pwLength) {
                pwLength = pw.length;
            }
            char[] pwChar = new char[pwLength];
            for(int i = 0; i < pwChar.length; i++) {
                pwChar[i] = pw[i];
            }
            return pwChar;
        }
     
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 400);
            frame.setLayout(new GridLayout(0, 1));
            frame.add(new JPassword(10));
            frame.setVisible(true);
        }
    }

    Gruß

    Fabio
    Geändert von Fabio Hellmann (24.08.11 um 07:59 Uhr) Grund: Code nochmals überarbeitet - jetzt funktionierts
    vfl_freak bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo Fabio,

    Danke schön

    Das ist ein sehr interessanter Ansatz, den ich sofort ausprobieren werde!

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    SE Tutorials.de Gastzugang
    Nun ... ja da versteht ihr was falsch : der übergebene int-Wert gibt nur die Darstellungslänge an *analog HTML : length="xx" sichtbare Anzahl*. Um jetzt sinnvoll die Eingabe zu überprüfen sollte man von PlainDocument ableiten und dieses dann setzen. Damit geht das ganze sehr viel einfacher und ohne KeyListener.
     

  5. #5
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Warum möchtest du die Passwortlänge auf 10 begrenzen? wozu so was?
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  6. #6
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von genodeftest Beitrag anzeigen
    Warum möchtest du die Passwortlänge auf 10 begrenzen? wozu so was?
    das ist hier historisch und DB-technisch so gewachsen und soll auch nicht geändert werden
    Betrifft zudem nur Inhouse-Programme .....

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  7. #7
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Moin,
    also mein Code den ich oben gepostet habe funktioniert jetzt. Ich habe ihn vorhin nochmal überarbeitet.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 14.03.11, 08:20
  2. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  3. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  4. Frage zu "switch"+"include"
    Von NemoFinder im Forum PHP
    Antworten: 23
    Letzter Beitrag: 04.10.05, 00:54
  5. Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 27.05.05, 15:29