JPanel dentro JScrollPane non scrolla

di il
1 risposte

JPanel dentro JScrollPane non scrolla

Ciao a tutti,
dopo aver realizzato un JPanel utilizzato per un intero software di configurazione mi sono reso conto che era necessario inserire la funzione di scroll..per questo ho aggiunto un jscrollpane però purtroppo non scrolla. Avevo pensato che il motivo potrebbe essere che il JscrollPane si ridimensiona automaticamente come il Jpanel ma settando le dimensioni del JScrollPane con setPreferredSize non è cambiato nulla.Cosa sbaglio??
Grazie in anticipo per l'aiuto..Di seguito il codice:

private JPanel createTitlePanel() {
CMASLabel lblTitle = new CMASLabel(panelProperties.getProperty("Title"), 1, 21, SwingConstants.CENTER, new Rectangle(0, 0, 350, 25));

JPanel panelTitle = new JPanel();
panelTitle.setLayout(new BorderLayout());
panelTitle.setMinimumSize(new Dimension(100, 30));
panelTitle.setPreferredSize(new Dimension(100, 30));
panelTitle.add(lblTitle, BorderLayout.CENTER);

return panelTitle;
}

protected JPanel createDetailPanel() {
JPanel detailPanel = new JPanel();
detailPanel.setLayout(new BorderLayout());
return detailPanel;
}

public void jbInit() {
JPanel panelData = new JPanel();
panelData.setLayout(new BorderLayout());


JScrollPane sp = new JScrollPane(panelData);
sp.setVerticalScrollBarPolicy(sp.VERTICAL_SCROLLBAR_ALWAYS);
sp.setHorizontalScrollBarPolicy(sp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
sp.setPreferredSize(new Dimension(100,100));

if (!panelProperties.getProperty("Title").trim().equals(""))
panelData.add(createTitlePanel(), BorderLayout.NORTH);

panelData.add(createDetailPanel(), BorderLayout.CENTER);

this.setLayout(new BorderLayout());
this.setBackground(Color.lightGray);
this.setForeground(Color.lightGray);
this.add(panelButton, BorderLayout.NORTH);
this.add(sp, BorderLayout.CENTER);
}

Ho dato per scontato che gli oggetti che utilizzano questa struttura si inizializzano richiamando il metodo jbInit() che ho postato.
Probabilmente settare un preferred size per lo scroll pane in questo caso è inutile (e non ha effetto). BorderLayout per la parte CENTER ignora e quindi non rispetta il preferred size del componente.Quindi potrei risolvere il problema senza modificare il layout?o devo cambiarlo necessariamente?

1 Risposte

  • Re: JPanel dentro JScrollPane non scrolla

    Per effettuare lo scrolling di un jpanel, occorre inserirlo in un boxlayout.

    Nel tuo caso
    panelData.setLayout(new BoxLayout(panelData, BoxLayout.LINE_AXIS));
Devi accedere o registrarti per scrivere nel forum
1 risposte