Chanchal wrote:
.
I have a JScrollPane on a JFrame. The JScrollPane contain a JPanel.On
click of a JButton, i'm adding new JButtons to this JPanel, side by
side.
..
Starting from the 4th button which is added dynamically, the buttons
goes outside the JScrollPane. I want the scrollbars of the JScrollPane
to appear when the dynamically added buttons are outside the area of
the JScrollPane so that i can scroll and view all the added JButtons.
Kindly advice on how this can be done.
Layouts, layouts, *layouts*!
This example does not quite have the shape or size
you originally had, but it ostensibly works.
<sscce>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class DynamicScroll extends JFrame implements ActionListener{
   private int buttonCount = 0;
   private JButton jButton1;
   private JPanel jPanelInScrollPane;
   private JScrollPane jScrollPane1;
   public DynamicScroll() {
       setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
       JPanel mainPanel = new JPanel( new BorderLayout(50,50) );
       mainPanel.setBorder( new EmptyBorder(50,50,50,50) );
       jPanelInScrollPane = new JPanel();
       jScrollPane1 = new JScrollPane(jPanelInScrollPane);
       jButton1 = new JButton("Add Button");
       // have you not learned layouts yet?!
       // 'null' layouts are the path to madness!
       // the only time you should be setting a
       // layout to null is for custom painting,
       // and designing a new layout manager..
       // considers - no, even then it is probably redundant
       //getContentPane().setLayout(null);
       jPanelInScrollPane.setLayout(new FlowLayout());
       //jScrollPane1.setViewportView(jPanelInScrollPane);
       mainPanel.add(jScrollPane1, BorderLayout.CENTER);
       //jScrollPane1.setBounds(40, 40, 320, 80);
       //jButton1.setText("Add Button");
       jButton1.addActionListener(this);
       mainPanel.add(jButton1, BorderLayout.SOUTH);
       //jButton1.setBounds(150, 170, 120, 23);
       setContentPane( mainPanel );
       pack();
   }
   public void actionPerformed(ActionEvent evt) {
      JButton newButton = new JButton("Button "+ buttonCount);
       //newButton.setBounds( buttonCount  * (100)+10, 5,  100, 50);
       jPanelInScrollPane.add(newButton);
       buttonCount ++ ;
       jPanelInScrollPane.repaint();
       jPanelInScrollPane.validate();
       // validate the frame
       validate();
   }
   public static void main(String args[]) {
       DynamicScroll ds = new DynamicScroll();
       ds.setSize(400,300);
       ds.setVisible(true);
   }}
</sscce>
--
Andrew Thompsonhttp://www.athompson.info/andrew/
Message posted via JavaKB.comhttp://www.javakb.com/Uwe/Forums.aspx/java-gui/200709/1
Dear Mr. Thompson,
     Thanks for the input. But this is not solving my problem. What
used. I want it to come to the left most end. and when the second one
newly added one is placed on the right of that. again because
flowlayout is used. but i do not want such movements. i want the first
that. the button should be added only towards right, no movements to
the left. that's why (i think) i cannot use flowlayout here.
 * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!