Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185

    Eventi associati a bottone

    Ciao a tutti,dovrei associare gli eventi fare in modo che cliccando sul bottone sia con il mouse, con la tastiera (invio o spazio) venga richiamato un metodo che fa del lavoro.
    Attualmente ho questo
    codice:
    btnAccedi.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    btnAccediMouseClicked(evt);
                }
            });
            btnAccedi.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnAccediActionPerformed(evt);
                }
            });
            btnAccedi.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyPressed(java.awt.event.KeyEvent evt) {
                    btnAccediKeyPressed(evt);
                }
            });
    che sono eventi aggiunti automaticamente da netbeans. Sono dentro al metodo InitComponent() che non è modificabile.
    Ho visto che il KeyListner cattura l'Enter della tastiera, mentre l'ActionListner cattura sia il click del mouse sia lo spazio.
    Ma come faccio a fare in modo che tutti richiamino uno stesso metodo? Come detto NetBeans non mi fa modificare tale codice..
    Grazie a tutti

  2. #2
    invece di usare gli automatismi di netbeans potresti creare a mano il codice e metterlo nel costruttore.
    codice:
    btnModify.addActionListener((ActionEvent e) -> {
                // TUO METODO
            });
    e poi crei un metodo da richiamare nei vari eventi.
    giusto per fare un esempio veloce.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Nel costruttore ci devo mettere il codice di esempio che mi hai scritto?

  4. #4
    nel costruttore, sotto al metodo InitComponent, ci metti tutti i tuoi eventi.
    levando quelli automatici di netbeans.
    ad esempio (prendendo due esempi dal costruttore di un mio programma):
    codice:
            txtUpAuthor.addActionListener((ActionEvent e) -> {
                try {
                    if (CheckConnection.check()) {
                        if (txtUpAuthor.getText().length() == 0) {
                            JOptionPane.showMessageDialog(null, "Choose an author");
                        } else {
                        }
                    }
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            });
    
            btnModify.addActionListener((ActionEvent e) -> {
                try {
                    if (CheckConnection.check()) {
                        getTableData();
                        tableData.requestFocus();
                    }
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            });

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Ma non è brutto avere un costruttore così lungo e complesso?
    Un'altra cosa, quale è il vantaggio nel dichiararsi gli eventi a mano, invece che farlo a fare a NetBeans (tralasciando il mio caso).

    EDIT
    Ho provato a modificare come mi hai suggerito tu.
    Ho messo nel costruttore questo
    codice:
    btnAccedi.addActionListener((ActionEvent aevt) -> {
                testEventi(aevt);
            });
    e il metodo che richiama è semplicemente questo

    codice:
    private void testEventi(ActionEvent evt){
            System.out.println("sono qui");
        }
    Al click (sinistro) del mouse e se premo la barra spaziatrice funziona, ma con enter non funziona. Questo perché, mi sembra di avere letto che ActionListner intercetta solo quei due tipi di eventi
    Ultima modifica di dennis87; 10-04-2015 a 12:10

  6. #6
    ma hai visto quanto è grosso InitiComponent??
    non puoi editarlo ma puoi vederlo.
    non è la stessa cosa??

    il vantaggio è che capisci meglio cosa fa il codice, hai un maggior controllo, e il codice è più pulito (anche se a te sembra di no).
    netbeans crea codice molto più prolisso, che poi "nasconde".

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Ho editato il messaggio di prima
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma hai visto quanto è grosso InitiComponent??
    non puoi editarlo ma puoi vederlo.
    non è la stessa cosa??

    il vantaggio è che capisci meglio cosa fa il codice, hai un maggior controllo, e il codice è più pulito (anche se a te sembra di no).
    netbeans crea codice molto più prolisso, che poi "nasconde".
    Quindi il consiglio sarebbe, lasciare che NetBeans scrivi automaticamente solo il codice per disegnare la GUI, eventi e altra logica è meglio farli a mano, giusto?

  8. #8
    il consiglio generale è quello di fare tutto a mano.

    ma sinceramente neanche io seguo questo consiglio fino in fondo, soprattutto nel caso di gui complesse.
    (perchè rinunciare sempre alle comodità?? ).
    però cerco di delegare il meno possibile ai suoi automatismi (ma questo vale per qualsiasi IDE).
    e gli eventi sono un esempio.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    OK. Ma per quanto riguarda il post più in alto? Che è comunque il tema del thread che ancora non ho risolto

  10. #10
    hai guardato i miei di esempi?
    perchè al metodo testEventi passi un oggetto ActionEvent?
    e qual'è di preciso il malfunzionamento che riscontri?

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.