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!