Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    "Persistenza" di oggetti

    Ciao a tutti.
    Scenario: solita JList riempita tramite un Vector di oggetti, in questo caso composti solo da una stringa e un int, pescati tramite una query a un db mysql.
    Quando viene selezionato un oggetto nella JList si ottiene un riferimento all'indice della Jlist nella cui posizione risiede quell'oggetto. Poi posso accedere ai dati dell'oggetto tramite la posizione, ad esempio con:
    int menuIndex = productVoices.get(0).getMenuId();

    dove productVoices è il vettore.
    Il problema che è ho da risolvere è che devo spostare la selezione sulla JList in base al menuId ottenuto da quell'istruzione. Ma come faccio a farlo se posso spostare le selezioni sulle Jlist solo con setSelectedIndex ed io non so a quale indice corrisponde quel particolare oggetto di cui posso ottenere solo il menuId (cioè un dato dell'oggetto)?
    Forse non è molto chiaro, provo a spiegarlo in parole più povere: io ho le solite due Jlist una dei menu e una dei prodotti, quella dei prodotti "dipende" da quella dei menu, cioè in base a quale menu seleziono visualizzo i prodotti che vi appartengono. Ma io devo implementare anche una ricerca dei prodotti, e quando clicco sul pulsante cerca (la ricerca può restituire un solo risultato perché i nomi dei prodotti sono univoci) riesco a visualizzare il prodotto cercato nella jlist dei prodotti, ma non riesco a fare il passaggio di cui sopra, cioè spostare l'indice della Jlist dei menu sul menu che effettivamente contiene il prodotto trovato.
    Spero di essermi spiegata...

    Grazie, come sempre.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Avrei risolto, ma ho un piccolo problema.

    Questo è il codice del metodo che fa la ricerca del prodotto:
    codice:
    private void bFindProductActionPerformed(java.awt.event.ActionEvent evt) {                                             
            Product product = new Product();
            product.setProductName(searchedProduct.getText());
            bNewProduct.setEnabled(false);
            Vector<Product> productVoices = DBConnection.searchProduct(product);
            if (!productVoices.isEmpty()) {
                //se ho ottenuto almeno un risultato carico la lista 
                modelProductList.clear();
                disableProductButtons();
                menuName.setText("");
                productName.setText("");
                int idMenu = 0;
                for (int i = 0; i < productVoices.size(); i++) {
                    Product current = (Product) productVoices.get(i);
                    modelProductList.addElement(current);
                    idMenu = current.getMenuId();
                }
                productList.setModel(modelProductList);
                for (int i = 0; i < modelMenuList.getSize(); i++) {
                    Menu current = (Menu) modelMenuList.getElementAt(i);
                    if (idMenu == current.getMenuId()) {
                        int currentId = modelMenuList.indexOf(current);
                        menuList.setSelectedIndex(currentId);
                        menuList.requestFocus();
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "Nessun prodotto trovato", "", JOptionPane.WARNING_MESSAGE);
                searchedProduct.setText("Cerca...");
            }
    
        }
    Funziona tutto, ma per motivi che al momento, dopo circa un'ora che ci sbatto la testa, continuo a ignorare, solo ed esclusivamente quando inserisco un nuovo menu e provo immediatamente dopo a fare una ricerca, mi sposta correttamente l'indice sul menu dove ha trovato il prodotto in questione, ma la lista dei prodotti non viene visualizzata. E non riesco proprio a capire perché, visto che nelle altre circostanze funziona!! Se elimino un menu, funziona, se modifico un menu funziona, solo quando ne inserisco uno nuovo e faccio *subito dopo* (cioè senza fare altre operazioni) la ricerca, ho questo problema.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Volevo chiedervi una cosa, ma il metodo valueChanged() delle JList quando viene lanciato? Solo ed esclusivamente se cambia la selezione? O anche se la lista viene 'ricaricata'?

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.