In pratica il mio programma deve visualizzare una classifica, ogni ipotetica riga (che corrisponde ad un pannello) contiene il nome e il punteggio della squadra. Non so però quante squadre ci siano all'inizio e il pannello potrebbe non contenerle tutte quindi ho pensato di inserirlo in un JScrollPane.
Il JScrollPane viene inserito in un JFrame, che ha il BorderLayout di default. Anche al JScrollPane ho lasciato il layout di default, mentre con il pannello interno ho provato sia con un GridLayout sia con un layout nullo, ma non credo sia lì il problema.
Ho provato a visualizzare le barre di scorrimento sempre ma non mi permettono mai di scorrere il pannello.
codice:
// ripulisco il pannello
center.removeAll();
// inserisco le squadre nel pannello
JPanel[] panels = new JPanel[squadre.size()];
center.setLayout(null);
for (int i = 0; i < panels.length; i++) {
panels[i] = new JPanel();
panels[i].setLayout(new GridLayout(1,2));
if (i%2 == 0)
panels[i].setBackground(Color.white);
else
panels[i].setBackground(Color.lightGray);
panels[i].add(new JLabel((String) squadre.elementAt(i), JLabel.CENTER));
panels[i].add(new JLabel(punti.elementAt(i).toString(), JLabel.CENTER));
panels[i].setBounds(0,i*30,getWidth(),30);
center.add(panels[i]);
}
centerScroll = new JScrollPane(center);
// aggiungo il pannello scorrevole alla finestra dopo aver rimosso quello inserito precedentemente
try {
cp.remove(2);
}
catch(ArrayIndexOutOfBoundsException e) {}
cp.add(centerScroll);
Allora:
- panels è l'array che contiene i pannelli da inserire in quello centrale, quelli con il nome e i punti
- center è il pannello centrale
- centerScroll è il JScrollPane che contiene il pannello centrale
Credo che l'errore sia qui da qualche parte.