Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    1

    Aggiornare dati contenuti in un JPanel

    Salve a tutti, vorrei aggiornare il contenuto del pannello , ma non riesco a capire come poter fare, avendo queste classi.

    Sono praticamente nuovo alla programmazione e probabilmente è una banalità, grazie in atiipo a chi vorrà rispondere.

    codice:
    public class PannelloPrincipale extends JPanel{
        
            JCheckBox bottone1 = new JCheckBox("monete usate");
            JTextField barra_ricerca = new JTextField();
            Lista lista_monete = new Lista();
            
            public PannelloPrincipale(Lista lista_monete) {
                
                this.lista_monete = lista_monete;
                AscoltatoreEtichetta listener = new AscoltatoreEtichetta();
                barra_ricerca.addActionListener(listener);
                setLayout(new BorderLayout());
                add(bottone1, BorderLayout.NORTH);
                add(barra_ricerca, BorderLayout.CENTER);
                add(this.lista_monete.pannello_scorrimento, BorderLayout.SOUTH);
                    
            }    
    }
    
    
    
    public class Lista extends JPanel {
        
        ArrayList<JCheckBox> lista_da_inserire = new ArrayList<JCheckBox>();
        public String[] elenco_monete = {
                "a", "b", "c", "d", "e", "f",
                "g", "h", "i", "l", "m"
                };
        JPanel pannello = new JPanel();
        JScrollPane pannello_scorrimento = new JScrollPane(pannello);
        
        public Lista() {
            
            pannello.setLayout(new GridLayout(lista_da_inserire.size(),1));
            for(int i = 0; i < elenco_monete.length; i++) {
                lista_da_inserire.add(new JCheckBox(elenco_monete[i]));
                pannello.add(lista_da_inserire.get(i));
            }
            pannello_scorrimento.setPreferredSize(new Dimension(100,100));
        }
        
        public Lista(ArrayList<JCheckBox> nuova_lista_da_inserire) {
            lista_da_inserire.clear();
            lista_da_inserire.addAll(nuova_lista_da_inserire);
            for(int i = 0; i < elenco_monete.length; i++) {
                pannello.add(lista_da_inserire.get(i));
            }
            pannello_scorrimento.setPreferredSize(new Dimension(100,100));
        }    
    }
    
    
    
    public class AscoltatoreEtichetta implements ActionListener {
    
    
        @Override
        public void actionPerformed(ActionEvent ev) {
            
            JTextField barra_ricerca = (JTextField)ev.getSource();
            String parola_cercata = barra_ricerca.getText();
    .............
        }
            
    }
    Ultima modifica di LeleFT; 02-10-2017 a 15:51 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ciao, ricordati innanzitutto di inserire il codice che posti fra i tag [CODE ][/CODE] per renderlo leggibile.

    Dovresti spiegare brevemente lo scopo del tuo programma, per quello che mi sembra di capire vorresti mostrare solo i checkbox che corrispondono al testo presente nella casella di ricerca, ma ci sono diverse questioni aperte (quando effettuare la ricerca, ad ogni carattere digitato/alla pressione di un bottone o del tasto invio?, come filtrare i risultati, basta che coincida l'inizio del nome, vuoi una corrispondenza perfetta o altro?).

    Per nascondere/attivare i componenti in un pannello non dovrebbe esistere qualcosa di già pronto, puoi creare un metodo nella classe Lista che a partire dal testo nella casella di ricerca (che passerai come argomento) e dal testo dei checkbox svuoti il pannello ed aggiunga i componenti "giusti", ma sarebbe tutto a tuo carico, anche se non è difficile da implementare.

    Potresti anche usare una JTable, che ha la possibilità di inserire JCheckbox e di filtrare/ordinare le righe, o anche una JList, ma bisognerebbe prima vedere con quali oggetti hai a che fare e cosa ti aspetti di ottenere, di sicuro io non terrei una lista come variabile di istanza e non userei come argomento del costruttore una lista di checkbox, quanto una lista di oggetti che rappresenti la "logica" del programma (es. una classe Moneta, anche se la usi solo nei nomi delle variabili e non si capisce a cosa possa servire), e creerei i componenti a partire da questa lista.



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 © 2024 vBulletin Solutions, Inc. All rights reserved.