JScroll :rendere Scrollabile una JScroll di un JPanel

di il
3 risposte

JScroll :rendere Scrollabile una JScroll di un JPanel

Ciao, ho inserito , disegnato, una jScroll nel mio JPanel in questo modo:

JScrollPane jScrollPane = new JScrollPane(multiCirclesPaintPanel);
jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

dove multiCirclesPaintPanel è un JPanel.

Ora, perchè non funziona? ho letto che devo renderla "Scrollabile" cosa significa?e come si fa?

Grazie!

3 Risposte

  • Re: JScroll :rendere Scrollabile una JScroll di un JPanel

    Posta più codice, con queste poche righe non si può dire molto.Quelle righe non sembrano sbagliate, io sono abituato a usare JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS e uguale per la vertical come proprietà, ma non dovrebbe essere sbagliato in ogni caso...
  • Re: JScroll :rendere Scrollabile una JScroll di un JPanel

    SetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(new GridLayout(0, 1, 0, 0));
    JPanel panel_4 = new JPanel();
    contentPane.add(panel_4);
    panel_4.setLayout(new GridLayout(0, 3, 0, 0));

    MultiCirclesPaintPanel multiCirclesPaintPanel = new MultiCirclesPaintPanel();
    multiCirclesPaintPanel.setForeground(Color.CYAN);
    multiCirclesPaintPanel.setOpaque(true);


    JScrollPane jScrollPane = new JScrollPane(multiCirclesPaintPanel);
    jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
  • Re: JScroll :rendere Scrollabile una JScroll di un JPanel

    Ok, hai inserito qualche riga in più, ma nella mia domanda era implicita la richiesta del codice completo, almeno relativa alla creazione del frame, altrimenti bisogna andare ad indovinare...
    Ho aggiunto qualche riga solo per poter provare a lanciare l'applicazione, solo lo stretto necessario, andrebbero fatte molte altre cose.
    Ecco il codice:
    
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    public class ScrollFrame extends JFrame
    {
    	public static void main(String[] a)
    	{
    		new ScrollFrame();
    	}
    	public ScrollFrame()
    	{
    		super("Prova");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		setExtendedState(JFrame.MAXIMIZED_BOTH);
    		JPanel contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(new GridLayout(0, 1, 0, 0));
    		JPanel panel_4 = new JPanel();
    		contentPane.add(panel_4);
    		panel_4.setLayout(new GridLayout(0, 3, 0, 0));
    		MultiCirclesPaintPanel multiCirclesPaintPanel = new MultiCirclesPaintPanel();
    		multiCirclesPaintPanel.setForeground(Color.CYAN);
    		multiCirclesPaintPanel.setOpaque(true);
    		JScrollPane jScrollPane = new JScrollPane(multiCirclesPaintPanel);
    		jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    		jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    		contentPane.add(jScrollPane);
    		setLocationRelativeTo(null);
    		setVisible(true);
    	}
    	private class MultiCirclesPaintPanel extends JPanel
    	{
    		
    	}
    }
    
    Con questo codice le scrollbar vengono aggiunte allo scrollpane, come è normale che sia, non è che ti sei dimenticato di aggiungere lo scrollpane al content pane?
    Se così non è, per favore metti tutto quello che è necessario a capire perché non ti funziona...
Devi accedere o registrarti per scrivere nel forum
3 risposte