Scrolling a JPanel containing smaller panels

I have a JPanel to which smaller JPanels will be added,

I want it to be scrollable, I tried adding it to a JScrollPane but noting happens,

the problem also is that I don't know how many small panels will I add, the number is incrementing (It's a real time application, so with any event a new panel will be added)

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.GridLayout;

import javax.swing.BoxLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JViewport;

import javax.swing.border.LineBorder;

publicclass TestPanels{

publicstaticvoid main(String[]args)

{

JPanel container =new JPanel();

container.setAutoscrolls(true);

container.setLayout(null);

/*JLabel textLabel_1 = new JLabel("TEST SCROLLING");

textLabel_1.setBounds(10,10,90,15);

JLabel textLabel_2 = new JLabel("TEST SCROLLING");

textLabel_2.setBounds(10,10,90,15);*/

JPanel[] containers =new JPanel[10];

JLabel[] labels =new JLabel[10];

for(int i=0;i<10;i++)

{

containers[i] =new JPanel();

containers[i].setBounds(10,10+(50*i),300, 50);

containers[i].setBorder(new LineBorder(Color.BLUE));

labels[i] =new JLabel("TEST SCROLLING");

labels[i].setBounds(0,0,90,15);

containers[i].add(labels[i]);

container.add(containers[i]);

}

/*JPanel panel_1 = new JPanel();

panel_1.add(textLabel_1);

panel_1.setBorder(new LineBorder(Color.BLUE));

container.add(panel_1);

JPanel panel_2 = new JPanel();

panel_2.add(textLabel_2);

container.add(panel_2);*/

JScrollPane pane =new JScrollPane(container);

pane.setAutoscrolls(true);

pane.setSize(100,50);

/*JViewport view = new JViewport();

view.setView(container);

view.setViewSize(new Dimension(50,50));

pane.setViewportView(view);

pane.setBounds(20,20,200,200);*/

JPanel temp =new JPanel();

temp.setLayout(new BorderLayout());

temp.add(pane,BorderLayout.CENTER);

temp.setSize(50,20);

JFrame test =new JFrame("Test");

test.setBounds(10,10,400,500);

test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

test.add(temp);

test.setVisible(true);

}

}

So i need to figure out how to scroll this "container" panel,

Rami.

[3970 byte] By [Rami_Magdia] at [2007-11-27 5:59:45]
# 1
why do you add "temp" in the frame, instead of directly adding "pane"?plus: if you want to use absolute coordinates/sizes, you should prolly set the container panel layout to "null"
calvino_inda at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 2

package com.sun.edu.gui;

import java.awt.BorderLayout;

import java.awt.Color;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

public class ScrollableJPanel extends JFrame {

private JPanel mainPanel;

private JPanel[] subMainPanel;

public ScrollableJPanel() {

mainPanel = new JPanel();

subMainPanel = new JPanel[100];

for(int j=0;j<100;j++) {

JPanel[] sub = addPanels();

mainPanel.add(sub[j]);

}

JScrollPane myPane = new JScrollPane(mainPanel);

getContentPane().add(myPane);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pack();

}

/**

* adds 100 panels with a label.

* @return array of JPanel named subMainPanel

*

*/

public JPanel[] addPanels() {

for(int i=0;i<100;i++) {

subMainPanel[i] = new JPanel();

JPanel panel = new JPanel();

panel.add(new JLabel(" " + i));

panel.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.RED));

subMainPanel[i].add(panel);

}

return subMainPanel;

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

ScrollableJPanel obj = new ScrollableJPanel();

obj.setVisible(true);

}

}

Try the above code. Its an example.

AnanSmritia at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 3
Anan: the addPanels() call shouldn't appear inside the loop :P
calvino_inda at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 4
Yes calvino, It was a mistake. I understood. I hope OP will do correctly ;)
AnanSmritia at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 5
It's almost what I need, but i have a questioncan't i have a bigger frame to which i'll add this one and another panel,like the divided HTML pages where you have two halves and each one can have its own scroll bars and everything (as the JAVA Docs)
Rami_Magdia at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 6
use JSplitPane
AnanSmritia at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...
# 7
Quit cross-posting this is a Swing related questions and should only be posted in the Swing forum.
camickra at 2007-7-12 16:36:42 > top of Java-index,Java Essentials,Java Programming...