Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: nome utente e password

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    nome utente e password

    Ciao,
    ho una pannello(JPanel) con una tastiera. Premendo i tasti della tastiera(jButton) devo inserire dentro un campo di testo(JTextField) e uno per le password(jPasswordField) i dati per il login.
    Adesso come posso dire ai pulsanti-bottoni di inserire le lettere corrispondenti ai tasti nelle caselle di testo?
    Posso gestire un piccolo database con un file xml per verificare che i dati siano corretti? Senza dover creare un DB complicato?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: nome utente e password

    Originariamente inviato da Salinas
    Adesso come posso dire ai pulsanti-bottoni di inserire le lettere corrispondenti ai tasti nelle caselle di testo?
    Se la lettera è esattamente già il testo sul pulsante ti basta avere 1 istanza di un ActionListener che registri su tutti i pulsanti (non è necessario avere N istanze di ActionListener!!). Nel actionPerformed() prendi la sorgente dell'evento come JButton, prendi il testo e .... lo inserisci nella casella di testo.
    Più difficile a dirlo che a farlo ....

    Originariamente inviato da Salinas
    Posso gestire un piccolo database con un file xml per verificare che i dati siano corretti? Senza dover creare un DB complicato?
    Se ti basta un XML ... tecnicamente non ci sono problemi a parte: 1) stabilire il "vocabolario" di tag, insomma, la struttura da usare e 2) effettuare il parsing del documento. La vera questione semmai è a livello "pratico": chi, come e quando deve poter aggiornare questo documento?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Se la lettera è esattamente già il testo sul pulsante ti basta avere 1 istanza di un ActionListener che registri su tutti i pulsanti (non è necessario avere N istanze di ActionListener!!)
    Si può avere un piccolo esempio?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Si può avere un piccolo esempio?
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    
    public class TestFrame extends JFrame {
        private JTextField textField;
        private LetterButtonListener listener;
        private JPanel buttonsPanel;
    
        public TestFrame() {
            super("Test");
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setSize(300, 200);
    
            textField = new JTextField();
            listener = new LetterButtonListener();
            buttonsPanel = new JPanel(new FlowLayout());
    
            createLetterButton('0');
            createLetterButton('1');
            createLetterButton('2');
            createLetterButton('A');
            createLetterButton('B');
    
            getContentPane().add(textField, BorderLayout.NORTH);
            getContentPane().add(buttonsPanel, BorderLayout.CENTER);
        }
    
        private void createLetterButton(char letter) {
            JButton b = new JButton(String.valueOf(letter));
            b.addActionListener(listener);
            buttonsPanel.add(b);
        }
    
        private class LetterButtonListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                JButton b = (JButton) e.getSource();   // "So" che la sorgente è un JButton
    
                try {
                    Document d = textField.getDocument();
                    d.insertString(textField.getCaretPosition(), b.getText(), null);
                    textField.requestFocusInWindow();
                } catch (BadLocationException ex) {
                    // In teoria non dovrebbe mai capitare
                }
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new TestFrame().setVisible(true);
                }
            });
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    JButton b = (JButton) e.getSource(); // "So" che la sorgente è un JButton
    Visto che il file non ha solo la tastiera ma anche altri bottoni, non sarebbe meglio specificare la sorgente?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Visto che il file non ha solo la tastiera ma anche altri bottoni, non sarebbe meglio specificare la sorgente?
    Beh, nel mio esempio ho registrato solo JButton e solo quelli della tastiera.
    Se tu hai "altri" JButton ... o registri ActionListener differenti (es. uno per tutti i pulsanti della tastiera, un altro per altri JButton) oppure usi lo stesso listener e discerni il "source" dell'evento (tipicamente con un test sui reference). Ma fai e scegli tu ovviamente
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    ok.
    Se ho due campi (text e password) come faccio a dire al bottone di inserire il testo in uno dei due a seconda del campo selezionato?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Se ho due campi (text e password) come faccio a dire al bottone di inserire il testo in uno dei due a seconda del campo selezionato?
    Tieni una variabile privata di tipo JTextField che referenzia l'ultimo text field che ha avuto il focus. Registri un FocusListener sui text field e aggiorni quella variabile nel focusGained().
    E questo perché quando clicchi su un pulsante, è questo ad avere il focus ... e non sapresti quale text field lo aveva.

    Quindi non solo puoi sapere quale è il text field che ha avuto appena prima il focus ma ovviamente puoi anche ridargli il focus dopo che hai aggiunto il testo.

    Come vedi è solo questione di "ingegnarsi" un pochino ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Fatto, funziona bene.
    Adesso come mi comporto per il tasto che utilizzo per cancellare le lettere inserite(in caso la digitazione sia sbagliata)?
    In pratica, come faccio a far cancellare ad una stringa s l'ultima lettera inserita?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    ho risolto anche questo.
    Adesso come faccio a controllare in un database che i dati inseriti siano corretti?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.