Salve sto cercando di creare un form ,che utilizzi due layer diversi ,per farlo procedo in questo modo creo prima il jframe poi uso come layout manager del jframe , il gridbagconstraints,poi inserisco due panel in ogni cella del frame . Ma niente non funziona !! sapreste aiutarmi ? vi allego il codice.
ps nel primo pannello deve esserci una jcombo box nel secondo un jbutton.
codice:
public class Form extends JFrame {
private JComboBox jCombo;
private JFormattedTextField jFormat;
private JButton jButton;
private JPanel jPanel1;
private JPanel jPanel2;
public void initComponents()
{
//SI SUPPONE CHE IL FRAME SIA UNA MATRICE 2 RIGHE E UNA COLONNA
//IN OGNI CELLA METTO UN JPANEL IN MODO DA SFRUTTARE PER OGNI JPANEL DIVERSI
//LAYOUT MANAGER
this.setSize(500,400);//DIMENSIONE JFRAME
GridBagLayout grid=new GridBagLayout();//LAYOUT JFRAME
GridBagConstraints c=new GridBagConstraints();
c.gridx=0;
c.gridy=0;
c.gridwidth=GridBagConstraints.REMAINDER;//DOPO IL PRIMO PANNELLO VADO A CAPO PER INSERIRE IL SECONDO
//nella seconda cella che si trova virtualmente sotto la prima
c.fill=GridBagConstraints.BOTH;//RIEMPIMENTO DELLA CELLA
jPanel1=new JPanel();
jPanel2=new JPanel();
//INSERISCO IL PRIMO PANNELLO NELLA PRIMA CELLA DELLA GRIGLIA
Dimension d=new Dimension(this.getWidth(), (int) (0.6*400));//DIMENSIONE DEL PRIMO PANNELLO
//LA DIMENSIONE SERVE PER DARE DIMENSIONE ALLA CELLA
jPanel1.setPreferredSize(d);
grid.setConstraints(jPanel1, c);//ABILITO I CONSTRAINTS
this.add(jPanel1);//INSERISCO L'ELEMENTO NEL FRAME
jCombo=new JComboBox();
jPanel1.setLayout(new FlowLayout());//AL PRIMO PANNELLO DO UN FLOWLAYOUT
jPanel1.add(jCombo,FlowLayout.LEFT);//INSERISCO LA JCOMBOBOX
//DIMENSIONI SECONDO PANNELLO
d.width=this.getWidth();
d.height=this.getHeight()-jPanel1.getHeight();
c.gridwidth=1;
c.gridy=1;
jPanel2.setPreferredSize(d);
grid.setConstraints(jPanel2, c);
this.add(jPanel2);//INSERIMENTO NELLA GRIGLIA SECONDO PANNELLO
jButton=new JButton("Ok");
jPanel2.add(jButton);//INSERIMENTO BOTTONE
//DETERMINO POSIZIONE BOTTONE
jButton.setLocation(jPanel2.getWidth()/2, jPanel1.getHeight()+jPanel2.getHeight()/2);
this.setVisible(true);
// this.pack();
}
}