![]()
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(); } }); } }

Rispondi quotando