Visualizzazione dei risultati da 1 a 2 su 2

Visualizzazione discussione

  1. #1

    Problema con lo scrolling multiplo di pannelli

    Ciao a tutti,

    sto realizzando una applicazione java usando le librerie grafiche swing.

    Ho un problema utilizzando i componenti JscrollPane.

    Come si può vedere dall'immagine allegata,

    ho costruito un Jpanel (chiamiamolo pippo) che ha al suo interno N JPanel (in questo caso N=3).

    Poichè N può crescere a piacere, ho inserito pippo in uno JScrollPane, per far sì che se ci fossero tanti sottopanneli, questi potessero scorrere verticalmente.

    Ora, all'interno di ciascuno dei sottopannelli, ci sono 3 JPanel: nella figura sono verdi, gialli e arancioni.

    Concentriamoci su quello arancione: qui dentro ci sono una sequenza di immagini lunga a piacere. Siccome si deve poter scorrere questa sequenza ho inserito il pannello arancione dentro un altro JScrollPane.
    Se però la sequenza di immagini è lunga, anche in figura si può vedere quello che succede:
    non si attivano le barre di scorrimento del pannello arancione, ma quelle del pannello che qui abbiamo chiamato pippo.

    Questo non è il comportamento che vorrei!!
    Vorrei che lo scroller di pippo si attivasse solo per poter scrollare verticalmente nel caso in cui N fosse elevato,
    mentre lo scrolle dei pannelli arancioni si attivasse solo orizzontalmente se la sequenza diventa troppo lunga.

    Ho anche provato a utilizzarare il metodo
    setHorizontalScrollBarPolicy(JScrollPane.HORIZONTA L_SCROLLBAR_NEVER);
    allo ScrollPane di pippo, ma non cambia niente, solamente non mosta le immagini.

    Qui sotto vi riporto anche il codice che costruisce il contenuto di pippo,
    spero che possiate aiutarmi.

    Grazie
    Matteo

    codice:
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
    
        for (int i = 0; i < N; i++) {
          //per ogni storia
          JPanel st = new JPanel();
          st.setBackground(Color.red);
          st.setLayout(new BorderLayout());
    
          //costruisco il pannello di info:
          JPanel info = new JPanel();
          info.setBackground(Color.green);
          info.add(new JLabel("Informazioni"));
          st.add(info, BorderLayout.WEST);
    
          //costruisco il visualizzatore delle foto!
          JPanel foto = new JPanel();
          foto.setLayout(new FlowLayout());
          foto.setBackground(Color.orange);
          Vector imgs = storie[i].getImmagini();
          for (int j = 0; j < imgs.size(); j++) {
            //lo spacer è solo un Jpannel messo tra una immagine e l'altra della sequenza
            foto.add(new Spacer(j, storie[i]));
            foto.add(new Foto( ( (Immagine) imgs.get(j)).image, j, storie[i]));
          }
          foto.add(new Spacer(imgs.size(), storie[i]));
    
          JPanel center = new JPanel();
          center.setLayout(new BorderLayout());
          center.setBackground(Color.yellow);
          center.add(new JScrollPane(foto), BorderLayout.NORTH);
    
          st.add(center, BorderLayout.CENTER);
    
          add(new JScrollPane(st));
        }
    Immagini allegate Immagini allegate

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.