Scusa per il ritardo nella risposta ma ho avuto un po' da fare in questo periodo.
Ritornando al mio problema ti posso dire che l'ho risolto aggiornando manualmente l'altezza del mainContent (e anche quella del JScrollPane con il metodo setViewportView) in base a quanti componenti ho.
Ora ho un altro piccolissimo problema non di vitale importanza ma che mi sta facendo impazzire, ovvero quando vengono create le barre del JSrcollPane la prima cella del GridBagLayout (il menù per intenderci) mi viene ristretta in altezza qualsiasi abbia impostata.
Immagine con altezza menù 30px senza JScrollPane:
Immagine con altezza menù 30px con JScrollPane:
Immagine con altezza menù 300px senza JScrollPane:
Immagine con altezza menù 300px con JScrollPane:
Da queste immagini si può vedere che qualsiasi sia l'altezza fissata sulla prima cella del GridBagLayout comunque quando entra in funzione il JScrollPane si ridimensiona a quella grandezza.
La prima immagine visualizza le dimensioni desiderate del menù.
Questo è il codice:
codice:
c = getContentPane();
c.setLayout(new GridBagLayout());
cg = new GridBagConstraints();
cg.fill = GridBagConstraints.HORIZONTAL;
jPanel1 = new JPanel();
jPanel1.setLayout(new FlowLayout(FlowLayout.LEFT));
jPanel1.setPreferredSize(new java.awt.Dimension(100, 30));
jButton1 = new JButton("add");
jButton1.setFont(new java.awt.Font("verdana", 0, 11));
jButton1.setMinimumSize(new Dimension(0, 0));
jButton1.setSize(23,23);
jButton1.setContentAreaFilled(false);
jButton1.setMargin(new Insets(0,0,0,0));
jButton1.setIcon(add);
jButton1.setIconTextGap(5);
jButton1.setToolTipText("add");
jButton2 = new JButton("refresh");
jButton2.setFont(new java.awt.Font("verdana", 0, 11));
jButton2.setMinimumSize(new Dimension(0, 0));
jButton2.setSize(23,23);
jButton2.setContentAreaFilled(false);
jButton2.setMargin(new Insets(0,0,0,0));
jButton2.setIcon(refresh);
jButton2.setIconTextGap(5);
jButton2.setToolTipText("refresh");
jLabel1 = new JLabel();
jLabel1.setFont(new java.awt.Font("verdana", 0, 11));
jLabel1.setText("asdasdadsdadadsa");
jLabel1.setBackground(new Color(255,255,185));
jLabel1.setBorder(null);
jPanel1.add(jButton1);
jPanel1.add(jButton2);
jPanel1.add(jLabel1);
cg.fill = GridBagConstraints.HORIZONTAL;
cg.ipadx = 0;
cg.weightx = 1.0;
cg.weighty = 0.0;
cg.gridx = 0;
cg.gridy = 0;
c.add(jPanel1, cg);
jSeparator1 = new JSeparator();
cg.ipady = 0;
cg.weightx = 0.0;
cg.weighty = 0.0;
cg.insets = new Insets(1,0,0,0);
cg.fill = GridBagConstraints.HORIZONTAL;
cg.gridwidth = 2;
cg.gridx = 0;
cg.gridy = 1;
c.add(jSeparator1, cg);
mainContent = new JPanel();
mainContent.setLayout(new FlowLayout(FlowLayout.LEFT));
mainContent.setPreferredSize(new java.awt.Dimension(700, 0));
jScrollPane1 = new JScrollPane(mainContent);
jScrollPane1.setBorder(null);
cg.ipady = 0;
cg.weightx = 0.0;
cg.weighty = 1.0;
cg.fill = GridBagConstraints.BOTH;
cg.gridwidth = 2;
cg.gridx = 0;
cg.gridy = 2;
c.add(jScrollPane1, cg);
Scusate per la lunghezza del post ma non sapevo fare altrimenti.