Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62

    [Java]JScrollPane capriccioso con JList

    Ciao a tutti, mi sono imbattuto in un problemino curioso, all'interno di un JFrame assime ad altri pannelli uso una JList all'interno di un JScrollPane adesso con 2 bottoncini dovrei inserire elementi nella JList, l'inserimento avviene ma lo scroll non si attiva
    ho fatto vari esperimenti per vedere dove era l'errore e ho notato che se nella lista metto valori prima lo scroll funziona altrimenti quindi immagino che sia dovuto ai componenti che la ospitano ma no riesco a capire come farla funzionare, qui parte del codice per spiegare meglio:

    codice:
     items = new Vector<EspreListItem>();
      //inserendo gli elementi prima lo scroll si attiva      
    //        for(int i=0;i<20;i++){
    //            items.add(new EspreListItem("ciao"+i, "120+321"));
    //        }
    
            listaPassato=new JList<EspreListItem>(items);
            listaPassato.addListSelectionListener(new AscoltatoreSelezioni(espressione));
    
            arrowIn.addActionListener(new InserisciAction());//qui viene chiamata l'azione
    
            
            scrollJList=new JScrollPane(listaPassato);
    
            scrollJList.setPreferredSize(new Dimension(400, 65));
            listaPassato.setLayoutOrientation(JList.HORIZONTAL_WRAP);
            listaPassato.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            
            
            panSud.setPreferredSize(new Dimension(500, 100));
            panSud.add(scrollJList);
            pannelloPrincipale.add(panSud,BorderLayout.SOUTH);
            finestra.add(pannelloPrincipale);
    l'azione che viene eseguita al momento dell'inserimento è questa :

    codice:
    private class InserisciAction implements ActionListener{
            
            @Override
            public void actionPerformed(ActionEvent e) {
                if(espressione.getText().isEmpty()){
                    mostraAvvertenza("Non è presente alcuna espressione da salvare!");
                }else{
                    
                    items.add(new EspreListItem(JOptionPane.showInputDialog("Inserisci il nome:"), espressione.getText()));
                    
                    scrollJList.getViewport().validate();
                    panSud.repaint();
                    
                    
                }
            }
    
           
        }
    dove sbaglio che dovrei cambiare?

  2. #2
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Ho risolto chiedo scusa a tutti per la castroneria che ho scritto, ma spero di essere perdonato visto che era la prima volta che usavo JList e non stavo guardando il tutorials ufficiale di java....
    cmq a chi potesse servire metto la soluzione a disposizione di tutti...
    non va bene usare il vettore per mettere dinamicamente all'interno le cose ma va usato
    DefaultListModel o almeno io ho risolto in questo modo....
    costruito cosi:
    codice:
    DefaultListModel items = new DefaultListModel();
    l'azione resta uguale ma va fatto "items.addElement( )" e per il resto ci penza lei...

    codice:
    items.addElement(new EspreListItem(JOptionPane.showInputDialog("Inserisci il nome:"), 
                             espressione.getText()));

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.