tags:

views:

24

answers:

1

Hi guys,

Just wondering if you could help wanting to produce an activity stream in Java, the idea was to have a JLabel and text area followed by a divider be displayed on a screen and then repeated X amount of times according to what data was in a database.

What I was wondering is how could I possibly repeat the placing the jlabel, text area, and diveder on the screen above the last rendered objects on the fly and all displayed correctly no matter the size of the text area of each set of object sort of like the image below.

alt text

Hope I made it clear as I could thanks

+2  A: 

Just provide your own version of a JPanel containing all these things and place them in a scrollpane that will care about having a long list of these panels..

class MyPanel extends JPanel
{
  ImageIcon icon;
  JTextArea textArea;

  MyPanel(ImageIcon icon, String text)
  {
    this.icon = icon;
    this.setPreferredSize(/*max size of your panel */)
    textArea = new JTextArea(10, 50);
    textArea.append(text);

    //the default manager will be a flow layout for single jpanels
    this.add(icon);
    JScrollPane sp = new JScrollPane(textArea);
    sp.setPreferredSize(new Dimension(/* size of your text label */));
    this.add(new JScrollPtextArea);
  }
}

class MyContainer extends JFrame
{
  JPanel container;
  JScrollPane spContainer;

  MyContainer()
  {
     container = new JPanel()
     container.setGridLayout(100,1); //100 elements max
     spContainer = new JScrollPane(container);
     spContainer.setPreferredSize(/* max size of whole thing */)
     this.add(spContainer);
     pack();
  }

  void addElement(MyPanel panel)
  {
    container.add(panel);
    this.pack();
  }
}

It's not fully working (I just wrote it) but it should give you the idea..

Jack