Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    simulare azioni da tastiera

    Allora mi esprimo meglio.
    Ho un JFrame, che è composto da una Jlist e da un JTextField, più un tasto 'AGGIUNGI'. Quando seleziono un elemento e clicco 'AGGIUNGI' avrei bisogno che l'elemento selezionato venga tolto dalla JList. Le ho provate tutte ma non sono capace di trovare un modo per farlo con remove(). L'unico sistema che funziona è inserire qualcosa nel JTextField di ricerca e poi cancellarlo, questo fà sì che venga rieseguita la query e aggiornata la lista. NB: sul JTextField vi è un azione di KeyReleased, quindi ogni tasto rilasciato da il via a una nuova ricerca.

    Ovviamente vorrei che questa cosa sia aumatizzata alla pressione del tasto aggiungi
    Come si può ben immaginare:
    codice:
    // ...
    JTextField.setText("A");
    JTextField.setText("");
    // ...
    non dà i risultati sperati, in quanto il testo non viene passato con la tastiera, come posso fare per simulare l'azione della tastiera che và su quel JTextField e digiti qualcosa????

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Penso che la via più breve sia implementando DocumentListener (javax.swing.event.DocumentListener) e appiccicandolo al tuo JTextField. Così tieni traccia delle modifiche nel JTextField, siano essere "automatizzate" o volontarie.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    sarà la via + breve ma a vedere dai tutorial che si trovano in rete non sembra quella + semplice.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non so che tutorial tu abbia letto però:

    codice:
    import javax.swing.*;
    import javax.swing.event.*;
    
    /**
     *
     * @author Andrea
     */
    public class FieldModDemo extends JFrame {
    private class MyTextField extends JTextField implements DocumentListener {
            public void changedUpdate(DocumentEvent de) {
                try {
                    System.out.println("Il nuovo valore è:"+de.getDocument().getText(0, de.getDocument().getLength()));
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            public void removeUpdate(DocumentEvent de) {
                try {
                    System.out.println("Il nuovo valore è:"+de.getDocument().getText(0, de.getDocument().getLength()));
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            public void insertUpdate(DocumentEvent de) {
                try {
                    System.out.println("Il nuovo valore è:"+de.getDocument().getText(0, de.getDocument().getLength()));
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            public MyTextField() {
                super();
                this.getDocument().addDocumentListener(this);
            }
       
    public FieldModDemo() {
            super("Demo");
            this.setSize(300,300);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            MyTextField mtf = new MyTextField();
            this.getContentPane().add(mtf);
            this.setVisible(true);
        }
        
        public static void main (String[] args) {
            new FieldModDemo();
        }
    }
    non mi sembra eccessivamente complicato. Istanzi MyTextField come fosse il tuo JTextField e fai i tuoi test.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Risolto, ho usato al posto di keyReleased CaretUpdate, stesso effetto ma non ha bisogno di un input da tastiera.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    sei sicuro che vada? voglio dire, se fai il setText con una stringa della stessa lunghezza di quella già presente, il caret non dovrebbe spostarsi, e quindi sostituire "A" con "B" potrebbe non triggerare alcun evento. Fai un po' di test, giusto per essere sicuro. Comunque, il DocumentListener è la strada più affidabile (è stato fatto apposta per questo)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Non dovrei avere problemi settando 2 setText.
    Uno imposta il JTF a " ", l'altro a "".

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.