Ciao a tutti,sono nuovo del forum, ho un problema con il GridBagLayout.
In sostanza devo mappare il contenuto di una matrice di stringhe in un pannello contenente una matrice di JLabel.Il pannello e' contenuto in una JScrollPane e il layout e' il GridBagLayout.Questo e' il codice del costruttore e dei metodi predisponi e disegna:

codice:
         public Gant(String[][]m){
                this.m=m;
                mypanel=new JPanel();
		mypanel.setLayout(null);
		mypanel.setBounds(this.getX(), this.getY(), this.getWidth(),this.getHeight());
		this.setContentPane(mypanel);
                layout = new GridBagLayout();
		lim = new GridBagConstraints();
		pannelloGant = new JPanel();
		pannelloGant.setLayout(layout);
		scrollpane=new JScrollPane(pannelloGant);
		scrollpane.setBounds(30, 30, this.getWidth()-90, this.getHeight()-300 );
		scrollpane.setVisible(true);
		scrollpane.setViewportView(pannelloGant);
		mypanel.add(scrollpane);
		predisponi(m);
		disegna(m);
		mypanel.repaint();
		this.setVisible(true);
               }
            public void predisponi(String[][]sol){

                ma=new JLabel[sol.length][sol[0].length];
                Dimension d=pannelloGant.getSize();

                if(d.width<sol[0].length*50){
    	               d.width=(sol[0].length*50);
    	               pannelloGant.setPreferredSize(d);
    	               pannelloGant.repaint();
                    }
                if(d.height<sol.length*50){
    	               d.height=(sol.length*50);
    	               pannelloGant.setPreferredSize(d);
    	               pannelloGant.repaint();
                   }
		for (int i = 0; i < ma.length; ++i) {
			for (int j = 0; j < ma[0].length; ++j) {
				ma[i][j]=new JLabel(new ImageIcon(""),JLabel.CENTER);
				ma[i][j].setOpaque(true);
				ma[i][j].setBorder(BorderFactory.createEtchedBorder());
				ma[i][j].setBackground(Color.black);
				lim.gridx = j;
				lim.gridy = i; 
				lim.weightx = 1;
				lim.weighty = 1;
				lim. fill = GridBagConstraints.BOTH;
				lim.insets.top = 0;
				lim.insets.bottom = 0;
				lim.insets.left = 0;
				lim.insets.right = 0;
				layout.setConstraints(ma[i][j], lim);
				pannelloGant.add(ma[i][j],0);
                                pannelloGant.repaint();
			}
		     }
	          }
           public void disegna(String[][]sol){
		for (int i=0;i<sol.length;i++){
			for(int j=0;j<sol[0].length;j++){
				if(sol[i][j].equals("*"))
					ma[i][j].setBackground(Color.yellow);     
			}
		  }
	   }




Come si vede dall'immagine quando il numero di colonne*50 supera l'ampiezza del pannello
viene disegnato (al bordo sinistro e destro del pannello) uno spazio bianco della jScrollpane.
Non riesco a capire perche' il GridBagLayout con uno JscrollPane non riempie tutto il pannello, spero possiate darmi una mano.
Grazie