На самом деле вы должны предоставить кусок кода, чтобы мы могли лучше его понять.
Но в целом я думаю, что могу понять, что вы имеете в виду (если я не ошибаюсь).
В основном вам нужен менеджер макетов во второй форме.
Вот пример кода, я надеюсь, что он может в целом удовлетворить ваши потребности.
Код для первой формы
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class FirstForm extends JFrame {
JButton fbtn = new JButton("Show F2");
JSlider fslider = new JSlider(1, 10);
SecondForm fsecond = new SecondForm();
public FirstForm(){
setSize(200,200);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(fbtn,BorderLayout.NORTH);
getContentPane().add(fslider,BorderLayout.CENTER);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
fbtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
fsecond.setVisible(true);
}
});
fslider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
fsecond.setBtnCount(fslider.getValue());
}
});
}
public static void main(String[] args) {
// TODO code application logic here
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new FirstForm().setVisible(true);
}
});
}
}
код для второй формы
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SecondForm extends JFrame {
Vector fbtns = new Vector();
int fshowbtncount=1;
GridBagConstraints gbc = new GridBagConstraints();
public SecondForm(){
setSize(200, 200);
setLocation(201, 0);
getContentPane().setLayout(new GridBagLayout());
fbtns.add(new JButton("Button ".concat(String.valueOf(fbtns.size()+1))));
invalidateForm();
}
private void invalidateForm(){
gbc.fill = GridBagConstraints.VERTICAL;
for (int i=0; i<fbtns.size(); i++) {
getContentPane().remove((Component)fbtns.get(i));
}
int y=0;
for (int i=0; i<fshowbtncount; i++) {
gbc.gridx=0;
gbc.gridy=y++;
getContentPane().add((Component)fbtns.get(i),gbc);
}
pack();
invalidate();
}
public void setBtnCount(int cnt){
if (cnt>=0 && cnt!=fshowbtncount) {
fshowbtncount = cnt;
while (fbtns.size()<cnt) {
fbtns.add(new JButton("Button ".concat(String.valueOf(fbtns.size()+1))));
}
invalidateForm();
}
}
}
Надеюсь, это поможет вам.