Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    Trasferimento testo due JList



    Ho preso come esempio questo codice da un sito, dove data una JList posso cancellare o aggiungere parole tramite una JTexField..

    Ho già aggiunto una JList, che però ha preso tutti i valori e funziona proprio come la prima, anche se io non gli ho assegnato niente..

    Ora vorrei far si che quando cancello una parola dalla prima JList, questa vada nella seconda JList..

    Qualcuno riesce ad aiutarmi?

    Grazie mille..

    codice:
    package components;
    
    /**
     * Author:  xxx
     * Date:    4 Febbraio 2012
     * Subject: Informatica
     * 
     * Inserire in una list box nomi di fiori o altro,
     * selezionando un item il nome deve apparire in una casella di testo
     * e contemporaneamente deve sparire dalla list box;
     * Inserire un nuovo nome nella casella di testo e aggiungerlo alla list box.
     */
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    public class ListDemo extends JPanel implements ListSelectionListener {
        private JList list,listAdd;
        private DefaultListModel listModel;
     
        private static final String hireString = "Aggiungi";
        private static final String fireString = "Trasferisci";
        private JButton fireButton;
        private JTextField employeeName;
     
        public ListDemo() {
            super(new BorderLayout());
     
            listModel = new DefaultListModel();
            listModel.addElement("Pane");
            listModel.addElement("Acqua");
            listModel.addElement("Pasta");
            listModel.addElement("Limoni");
     
            // Creo l'elenco, e lo metto nella JList
            list = new JList(listModel);
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            list.setSelectedIndex(0); // Indice selezione iniziale
            list.addListSelectionListener(this);
            list.setVisibleRowCount(10); // Righe visualizzate in lista (dimensione)
            JScrollPane listScrollPane = new JScrollPane(list);
            
            listAdd = new JList(listModel);
            listAdd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            listAdd.setSelectedIndex(0); // Indice selezione iniziale
            listAdd.addListSelectionListener(this);
            listAdd.setVisibleRowCount(10); // Righe visualizzate in lista (dimensione)
            JScrollPane listScrollPaneAdd = new JScrollPane(listAdd);
     
            JButton hireButton = new JButton(hireString);
            HireListener hireListener = new HireListener(hireButton);
            hireButton.setActionCommand(hireString);
            hireButton.addActionListener(hireListener);
            hireButton.setEnabled(false);
     
            fireButton = new JButton(fireString);
            fireButton.setActionCommand(fireString);
            fireButton.addActionListener(new FireListener());
     
            employeeName = new JTextField(15);
            employeeName.addActionListener(hireListener);
            employeeName.getDocument().addDocumentListener(hireListener);
            String name = listModel.getElementAt(list.getSelectedIndex()).toString();
     
            // Creo un pannello che utilizza BoxLayout
            JPanel buttonPane = new JPanel();
            buttonPane.setLayout(new BoxLayout(buttonPane,
                                               BoxLayout.LINE_AXIS));
            buttonPane.add(fireButton);
            buttonPane.add(Box.createHorizontalStrut(5)); // Distanza fireButton-separator
            buttonPane.add(new JSeparator(SwingConstants.VERTICAL));
            buttonPane.add(Box.createHorizontalStrut(5)); // Distanza separator-employeeName
            buttonPane.add(employeeName);
            buttonPane.add(hireButton);
            buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     
            add(listScrollPane, BorderLayout.WEST);
            add(listScrollPaneAdd, BorderLayout.EAST);
            add(buttonPane, BorderLayout.PAGE_END);
        }
     
        class FireListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                // Il metodo va avanti soltanto se c'è una
                // selezione valida in modo da poter andare
                // avanti e rimuovere ciò che è selezionato.
                int index = list.getSelectedIndex();
                listModel.remove(index);
     
                int size = listModel.getSize();
     
                if (size == 0) { // Lista vuota
                    fireButton.setEnabled(false);
     
                } else { // Seleziono un indice
                    if (index == listModel.getSize()) {
                        // Rimuovo l'indice in ultima posizione
                        index--;
                    }
     
                    list.setSelectedIndex(index);
                    list.ensureIndexIsVisible(index);
                }
            }
        }
     
        // Listener condiviso dal campo di testo e dal "pulsante di noleggio"
        class HireListener implements ActionListener, DocumentListener {
            private boolean alreadyEnabled = false;
            private JButton button;
     
            public HireListener(JButton button) {
                this.button = button;
            }
     
            // Richiesto dall'ActionListener
            public void actionPerformed(ActionEvent e) {
                String name = employeeName.getText();
     
                // L'utente non può digitare un nome univoco
                if (name.equals("") || alreadyInList(name)) {
                    Toolkit.getDefaultToolkit().beep();
                    employeeName.requestFocusInWindow();
                    employeeName.selectAll();
                    return;
                }
     
                int index = list.getSelectedIndex(); // Ottenere l'indice selezionato
                if (index == -1) { // Nessuna selezione in modo da inserire dall'inizio
                    index = 0;
                } else { // Aggiungi dopo l'elemento selezionato
                    index++;
                }
     
                listModel.insertElementAt(employeeName.getText(), index);
                // Se abbiamo solo voluto aggiungere alla fine, ci piacerebbe fare questo:
                // listModel.addElement (employeeName.getText ());
     
                //Reset the text field.
                employeeName.requestFocusInWindow();
                employeeName.setText("");
     
                // Seleziona la nuova voce e rendila visibile
                list.setSelectedIndex(index);
                list.ensureIndexIsVisible(index);
            }
     
            // Metodo di test per l'ugualianza di stringhe, si potrebbe ottenere
            // più soddisfazione tramite l'algoritmo. Si potrebbe desiderare di
            // ignorare gli spazi bianchi e di capitalizzazione
            protected boolean alreadyInList(String name) {
                return listModel.contains(name);
            }
     
            // Richiesto dal DocumentListener.
            public void insertUpdate(DocumentEvent e) {
                enableButton();
            }
     
            // Richiesto dal DocumentListener.
            public void removeUpdate(DocumentEvent e) {
                handleEmptyTextField(e);
            }
     
            // Richiesto dalistener.
            public void changedUpdate(DocumentEvent e) {
                if (!handleEmptyTextField(e)) {
                    enableButton();
                }
            }
     
            private void enableButton() {
                if (!alreadyEnabled) {
                    button.setEnabled(true);
                }
            }
     
            private boolean handleEmptyTextField(DocumentEvent e) {
                if (e.getDocument().getLength() <= 0) {
                    button.setEnabled(false);
                    alreadyEnabled = false;
                    return true;
                }
                return false;
            }
        }
     
        // Questo metodo è richiesto dal ListSelectionListener.
        public void valueChanged(ListSelectionEvent e) {
            if (e.getValueIsAdjusting() == false) {
     
                if (list.getSelectedIndex() == -1) {
                // Nessuna selezione, disabilita il pulsante di cancellazione
                    fireButton.setEnabled(false);
     
                } else {
                // Seleziona, abilita il pulsante di cancellazione
                    fireButton.setEnabled(true);
                }
            }
        }
     
        /**
         * Creare l'interfaccia grafica; per motivi di sicurezza, questo metodo
         * deve essere invocato dal: event-dispatching thread.
         */
        
        private static void createAndShowGUI() {
            // Crea e imposta la finestra
            JFrame frame = new JFrame("ListBox");
            frame.setSize(200,700);
            frame.setLocation(100,100);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            // Crea e imposta il pannello
            JComponent newContentPane = new ListDemo();
            newContentPane.setOpaque(true); //content panes must be opaque
            frame.setContentPane(newContentPane);
     
            //Visualizza la finestra
            frame.pack();
            frame.setVisible(true);
        }
     
        public static void main(String[] args) {
            // Crea e visualizza la grafica di questa applicazione
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Uhm... ti faccio notare che sia list che listAdd condividono lo stesso modello e quindi ogni cambiamento in una si ripercuote identica nell'altra...

    Ciao

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.