Salve ragazzi ho un nuovo quesito da porvi.

Ho un JFrame che contiene una tabella e alcune label, questa tabella ogni 3 secondi in maniera automatica prende i dati da una query e aggiorna i valori al suo interno. Ora per fare questo non ci sono stati particolari problemi, la tabella viene aggiornata correttamente.

Però il problema è dovuto dalle dimensioni del frame, in pratica quando il programma viene eseguito ha una dimensione che non riesco a modificare, e se clicco sul quadrato in altro a destra la finestra si estende correttamente, ma nel momento in cui la tabella riaggiorna i suoi dati ritorna alle dimensioni di prima.

Spero di essere stato chiaro. Mi potete aiutare per favore???

codice:
public class MainClass extends Thread{

	private static MainClass istanza = null;
	Database db;
	JFrame frame;
	JPanel deskTabellaPartenze;
	JPanel pane;
	JMenuBar menuBar;
	JLabel labelCitta;
	Vector rows;
	Boolean ciclo;
	Vector Columns;
	DefaultTableModel tabModel;
	JTable TabellaPartenze;
	JMenuBar jMenuBar1 = new javax.swing.JMenuBar();
    JMenu jMenu1 = new javax.swing.JMenu();
    JMenu jMenu2 = new javax.swing.JMenu();
    
	private javax.swing.JScrollPane jScrollPane1, jScrollPane2;

	public static void main(String[] args) {
		
	    MainClass d = new MainClass();
	  }
	
	public MainClass(){
		inizializzaDatabase();
	        JMenu menu, submenu;
	        JMenuItem menuItem;
	        JRadioButtonMenuItem rbMenuItem;
	        JCheckBoxMenuItem cbMenuItem;
        menuBar = new JMenuBar();
	        menu = new JMenu("Impostazioni");
	        menu.setMnemonic(KeyEvent.VK_A);
	        menu.getAccessibleContext().setAccessibleDescription(
	                "The only menu in this program that has menu items");
	        menuBar.add(menu);
	        menuItem = new JMenuItem("Inserisci nuova corsa",
	                                 KeyEvent.VK_T);
	        menuItem.addActionListener( new ActionListener() {
	            public void actionPerformed( ActionEvent e ) {
	            	ciclo = false;
	                frame.getContentPane().remove(deskTabellaPartenze);
	                
	                GridBagLayoutDemo ne = new GridBagLayoutDemo();
	                frame.remove(deskTabellaPartenze);
	                frame.remove(pane);
	                frame.remove(labelCitta);
	                frame.add(ne.addComponentsToPane(frame.getContentPane()));
	                frame.pack();

	            }
	        } );
	        menuItem.setAccelerator(KeyStroke.getKeyStroke(
	                KeyEvent.VK_1, ActionEvent.ALT_MASK));
	        menuItem.getAccessibleContext().setAccessibleDescription(
	                "This doesn't really do anything");
	        menu.add(menuItem);

	        ImageIcon icon = createImageIcon("images/middle.gif");
	        menuItem = new JMenuItem("Both text and icon", icon);
	        menuItem.setMnemonic(KeyEvent.VK_B);
	        menu.add(menuItem);

	        menuItem = new JMenuItem(icon);
	        menuItem.setMnemonic(KeyEvent.VK_D);
	        menu.add(menuItem);

	        menu.addSeparator();
	        ButtonGroup group = new ButtonGroup();

	        rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
	        rbMenuItem.setSelected(true);
	        rbMenuItem.setMnemonic(KeyEvent.VK_R);
	        group.add(rbMenuItem);
	        menu.add(rbMenuItem);

		frame = new JFrame("Pullman ver 1.0");

		frame.setSize(900, 480);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setJMenuBar(menuBar);
		frame.pack();
        frame.setVisible(true);

	        String NumeroLocalita = db.eseguiQuery("SELECT COUNT(*) FROM archiviolocalita").toString();

	        int NumeroPLocalita = Integer.parseInt(elimina_caratteri(NumeroLocalita));

	              labelCitta = new JLabel();
	              frame.getContentPane().add(BorderLayout.NORTH,labelCitta);
	              
	              Font myFont = new Font("Verdana", Font.PLAIN, 14);
	              labelCitta.setFont(myFont);

	                ciclo = true;
	              for(int i =0; i<NumeroPLocalita; i++){
	            	  if (ciclo == true){
	            	  Object[] Localita = db.eseguiQuery("SELECT Localita FROM archiviolocalita").toArray();
	                  String citta = Localita[i].toString();
	                  citta = elimina_caratteri(citta);

	                  labelCitta.setText(citta); 
		              labelCitta.setPreferredSize(new Dimension (50,70));

	                  
		              
		              String oraPartenzeDa = db.eseguiQuery("SELECT ORA_PARTENZA FROM archiviopartenzeferiali, archiviolocalita WHERE Codice_Localita = Codice and localita = '" + citta +"';").toString();
	                  String codice1Nota = db.eseguiQuery("SELECT archivionotepartenze.abbreviazione FROM archivionotepartenze, archiviolocalita, archiviopartenzeferiali WHERE codice_localita = archiviolocalita.codice and localita = '" + citta + "' and codice_1nota = archivionotepartenze.codice;").toString();
	                  db.eseguiAggiornamento("insert into archiviopartenzeferiali values (4,'10:10:10', 01,02,'10:50:10', '11:11:11', 02,03, '12:12:12');");


	                  Vector v = db.eseguiQuery( "SELECT CODICE_LOCALITA, ORA_PARTENZA,ORA_ARRIVO_DA, archivionotearrivi.ABBREVIAZIONE, archivionotearrivi2.ABBREVIAZIONE FROM archiviopartenzeferiali, archiviolocalita, archivionotearrivi, archivionotearrivi2 WHERE codice_localita = archiviolocalita.codice and localita = '"+ citta+"'and  codice_1nota = archivionotearrivi.codice and codice_2nota = archivionotearrivi2.codice  ;" );
	                  String abbreviazione1 = db.eseguiQuery( "SELECT archivionotearrivi.ABBREVIAZIONE FROM archiviopartenzeferiali, archiviolocalita, archivionotearrivi, archivionotearrivi2 WHERE codice_localita = archiviolocalita.codice and localita = '"+ citta+"'and  codice_1nota = archivionotearrivi.codice and codice_2nota = archivionotearrivi2.codice  ;" ).toString();
	                  String abbreviazione2 = db.eseguiQuery( "SELECT archivionotearrivi2.ABBREVIAZIONE FROM archiviopartenzeferiali, archiviolocalita, archivionotearrivi, archivionotearrivi2 WHERE codice_localita = archiviolocalita.codice and localita = '"+ citta+"'and  codice_1nota = archivionotearrivi.codice and codice_2nota = archivionotearrivi2.codice  ;" ).toString();
                      abbreviazione1 = elimina_caratteri(abbreviazione1);
                      abbreviazione2 = elimina_caratteri(abbreviazione2);

	                  System.out.println(abbreviazione1);
	                  System.out.println(abbreviazione2);
	                  Vector vettore = new Vector();
	                   
	                    vettore.add(new String("CODICE LOCALITA"));
	                    vettore.add(new String("ORA PARTENZA"));
	                    vettore.add(new String("ORA ARRIVO"));
	                    vettore.add(new String("NOTA"));
	                    vettore.add(new String("NOTA BIS")); 
	                    
	                    JTable table = new JTable(v, vettore);
	                    System.out.println("Sono qui");
	                    jScrollPane1 = new javax.swing.JScrollPane();
	                    System.out.println("Sono qui");
	                    jScrollPane1.setName("jScrollPane1");
	                    System.out.println("Sono qui");
	                    jScrollPane1.setViewportView(table);
	                    System.out.println("Sono qui");
	                    
	                    table.getColumnModel().getColumn(0).setPreferredWidth(100);
	                    table.getColumnModel().getColumn(1).setPreferredWidth(180);
	                    table.getColumnModel().getColumn(2).setPreferredWidth(180);
	                    table.getColumnModel().getColumn(3).setPreferredWidth(50);
	                    table.getColumnModel().getColumn(4).setPreferredWidth(50);
 
	                    deskTabellaPartenze = new JPanel(new BorderLayout());
	                    deskTabellaPartenze.setLayout(new GridBagLayout());
	                    GridBagConstraints z = new GridBagConstraints();
	                    z.fill = GridBagConstraints.HORIZONTAL;
	                    frame.add(deskTabellaPartenze, BorderLayout.CENTER);
	                    
	                    z.ipady=82;
	                	z.fill = GridBagConstraints.HORIZONTAL;
	                	z.gridx = 0;
	                	z.gridy = 0;
	                    deskTabellaPartenze.add(jScrollPane1, z);

	                    frame.pack();
	                    int num = table.getRowCount();
	                    for(int b = 0; b<num; b++){
	                    	System.out.println("Sono entrato"+b);	
	                        
	                    }
	  	                String descrizioneAbbr1 = db.eseguiQuery("SELECT Nota FROM Archivionotearrivi where abbreviazione= '"+abbreviazione1+"';").toString();
	                    descrizioneAbbr1 = elimina_caratteri(descrizioneAbbr1);
	                    String descrizioneAbbr2 = db.eseguiQuery("SELECT Nota FROM Archivionotearrivi where abbreviazione= '"+abbreviazione2+"';").toString();
	  	                descrizioneAbbr2 = elimina_caratteri(descrizioneAbbr2);
	                    pane = new JPanel();
	  	                
	  	                frame.getContentPane().add(BorderLayout.SOUTH,pane);
		                pane.setLayout(new GridBagLayout());
		                GridBagConstraints c = new GridBagConstraints();
		                c.fill = GridBagConstraints.HORIZONTAL;
		                JLabel labelNote = new JLabel(abbreviazione1);
		                c.weightx = 0.5;
		                
		                c.fill = GridBagConstraints.HORIZONTAL;
		            	c.gridx = 0;
		            	c.gridy = 0;
		            	pane.add(labelNote, c);
		            	
		            	JLabel labelNote2 = new JLabel(abbreviazione2);
		            	c.fill = GridBagConstraints.HORIZONTAL;
		            	c.ipady = 20;
		            	c.weightx = 0.0;
		            	c.gridwidth = 3;
		            	c.gridx = 0;
		            	c.gridy = 1;
		            	pane.add(labelNote2, c);
		            	
		            	JLabel labelDescrizione1 = new JLabel(descrizioneAbbr1);
		            	c.fill = GridBagConstraints.HORIZONTAL;
		            	c.ipady = 20;
		            	c.weightx = 0.0;
		            	c.gridwidth = 3;
		            	c.gridx = 1;
		            	c.gridy = 0;
		            	pane.add(labelDescrizione1, c);
		            	
		            	JLabel labelDescrizione2 = new JLabel(descrizioneAbbr2);
		            	c.fill = GridBagConstraints.HORIZONTAL;
		            	c.ipady = 20;      //make this component tall
		            	c.weightx = 0.0;
		            	c.gridwidth = 3;
		            	c.gridx = 1;
		            	c.gridy = 1;
		            	pane.add(labelDescrizione2, c);

	  	                labelNote.setPreferredSize(new Dimension (50,70));
	                    labelNote2.setText(abbreviazione1);*/
	                    
	                    frame.pack();            
	                  try {
						MainClass.sleep(3000);
						pane.removeAll();
						frame.remove(deskTabellaPartenze);
					 }//fine try 
	                 catch (InterruptedException e) {
						e.printStackTrace();
					 }
	    
	              }
	              }  
	              System.out.println("Sono uscito dal ciclo");
	}

	 private ImageIcon createImageIcon(String string) {

		return null;
	}

	public void addRow() 
          {
          Vector r=new Vector();
          r=createBlankElement();
          rows.addElement(r);
          TabellaPartenze.addNotify();

          }
	 public Vector createBlankElement() 
     {
     Vector t = new Vector();
     t.addElement((String) " ");
     t.addElement((String) " ");
     t.addElement((String) " ");
     t.addElement((String) " ");
     
     return t;
     }

	public void addColumns(String[] colName)//Table Columns
    {
       for(int i=0;i<colName.length;i++)
          Columns.addElement((String) colName[i]);
    }

	private String elimina_caratteri(String numeroPartenzeFeriali) {
	   numeroPartenzeFeriali = numeroPartenzeFeriali.replace("]", ""); 
	   numeroPartenzeFeriali = numeroPartenzeFeriali.replace("[", "");
		return numeroPartenzeFeriali;
	}

	private void inizializzaDatabase() {
		db = new Database("partenzearrivi");
	    if ( !db.connetti() ) {
	       System.out.println("Errore durante la connessione al database :(");
	       System.out.println( db.getErrore() );
	       System.exit(0);
	    }
	    else{
	    	System.out.println("Mi sono connesso");
	    }
	}
}