Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JScrollPane non funziona con JList

    Salve a tutti. Ho un problema con la creazione di una JList dove se il numero di elementi supera la capacit' della schermata, non si ha la possibilità dello scroll. Gli elementi della JList sono allocati dinamicamente quindi non so a priori il numero effettivo degli elementi (che sono dei CheckBox)
    Ecco la parte di codice interessata (posto solo quella interessata, è ovvio che mancano molte parti ma quelle inerenti alla JList e il JScrollPane ci sono
    codice:
    public class Frame extends javax.swing.JFrame {
    
        public Frame() {
            initComponents();
        }
    
        @SuppressWarnings("unchecked")
    
        private void initComponents() {
            jScrollPane1 = new javax.swing.JScrollPane();
            jList1 = new javax.swing.JList();
            jScrollPane1.setViewportView(jList1);
    }
    
    
    /*Adesso la parte di codice che aggiunge elementi alla lista*/
    
    private void RilevaTracce () {
             for (int k=0; k<s;k++) {    //questo ciclo aggiunge s volte la stessa traccia
                        TracceDaScrobblare.add(new Track());
                        TracceDaScrobblare.get(TracceDaScrobblare.size()-1).setNome(LocalTrackList.getTrackList().get(i).getNome());
                        TracceDaScrobblare.get(TracceDaScrobblare.size()-1).setArtista(LocalTrackList.getTrackList().get(i).getArtista()); 
                        TracceDaScrobblare.get(TracceDaScrobblare.size()-1).setContatore(Integer.toString(s)); 
                        TracceDaScrobblare.get(TracceDaScrobblare.size()-1).setDataUltimoAscolto(iTunesTrackList.getTrackList().get(i).getDataUltimoAscolto());
                        JCheckBox cb = new JCheckBox(LocalTrackList.getTrackList().get(i).getArtista()+" - "+LocalTrackList.getTrackList().get(i).getNome());
                        cb.setBounds(10, 10 + (20 * yPos++), 400, 20);     //Questo codice è verificato...aggiunge checkboxes uno sotto l'altro
                        cb.setSelected(true);
                        cb.addActionListener(new java.awt.event.ActionListener() {
                               public void actionPerformed(java.awt.event.ActionEvent evt) {
                                          ControllaCheckBoxes();
                                }
                        });                                    
                        jList1.add(cb);                                       //aggiunge il CheckBox alla lista           
                }     
    }
    Fin quando il numero di Checkbox è modesto tale da entrare in una schermata, va bene, ma se supera la capacità della schermata dovrei aver bisogno di uno ScrollPane (che qui non funziona!)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Mamma mia...

    setBounds() serve a posizionare i componenti all'interno di un contenitore non gestito da LayoutManager.

    Una JList NON è un contenitore (non in senso stretto).

    Una JList è un componente che sfrutta il pattern MVC. Gli oggetti vanno aggiunti al modello. Ci pensa la JList a visualizzarli. Al massimo si può creare un Renderer per personalizzare il modo in cui ciascun elemento della lista debba essere "renderizzato", ma mai e poi mai si deve andare a specificare una "posizione" all'interno della JList.

    Consiglio di studiare per bene il tutorial di Oracle How to Use Lists.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ok grazie

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.