Bonjour, j ai un probleme qui risque de paraitre simple a certains vu qu il ne me semble pas avoir trouve de gens ayant ce meme probleme.

J ai donc une JFrame principale qui contient 3 JPanel et 1 JScrollPane.
Des lors que je mets des JTextField dans l un de ces JPanel (ou JScrollPane) ma fenetre principale se retrouve entierement vide.
Jusque la je m etais debrouille en utilisant de simples TextField (ca marche pour une raison qui m echappe) mais maintenant je veux utiliser dans ma JScrollPane des JSpinner et le probleme est le meme.

Chose interessante, si je ne mets QU UN SEUL JSpinner, ma fenetre s affiche alors de maniere aleatoire. J a trouve plusieurs suggestions me suggerant d utiliser invokeAndWait mais j avoue ne pas avoir saisi comment me servir de celui ci...

Voici donc une partie du code que j espere suffisante :

//Main_window.java

package gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagLayout;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main_window {
static JFrame window;
static JComponent progname;
static JComponent toolbox;
static JComponent dropbox; // <= c est ce JScrollBar qui m interesse
static JComponent confirm;

public static void main(String[] args)
{
window=new JFrame(); //on cree une trame
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(1000, 750);
window.setTitle("Main window");
window.setVisible(true);//etat
init();
}

private static void init() {
JPanel scrolledpanel = new JPanel(new GridBagLayout());

//scrolledpanel.setPreferredSize(new Dimension(680,1600));
dropbox=new Dropboxpanel(scrolledpanel);

window.getContentPane().setLayout(new BorderLayout());
window.getContentPane().add(dropbox, BorderLayout.CENTER);
}
}



//Dropboxpanel.java


package gui;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneLayout;

public class Dropboxpanel extends JScrollPane {


private static final long serialVersionUID = 1L;
private JPanel own;
private int lasty;
private Insets insets=new Insets(3,3,3,3);

public Dropboxpanel (JPanel mypanel)
{
super(mypanel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
own=mypanel;
lasty=-1;
init();
}

private void init() {

//this.add(new JLabel("Dropbox"));
this.setLayout(new ScrollPaneLayout());
this.setBackground(Color.black);
this.add(new JScrollBar());

//several times add but just for test purpose, remove em later
//addpanel(new Stringsubpanel());
//addpanel(new Fileboxsubpanel());
addpanel(new Floatsubpanel());


//addpanel(new Intsubpanel());
//addpanel(new Booleansubpanel());

}

private void addpanel(Subpanel toadd){
GridBagConstraints c=new GridBagConstraints();
c.insets=insets;
c.gridy=lasty + 1;
lasty++;
own.add(toadd, c);

}


}


//Floatsubpanel.java

package gui;

import java.awt.Color;
import java.lang.reflect.InvocationTargetException;

import javax.swing.JLabel;

public class Floatsubpanel extends Stringintabst {

public Floatsubpanel (){
super();
init();

}
public void init(){
defaultfield=new JLabel ("mettre un jspinner a float ");

c.gridy=1;
c.gridx=4;
this.add(defaultfield,c);
this.setBackground(Color.gray);
this.repaint();
}

}

//Stringintabst.java

package gui;

import java.awt.Checkbox;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.TextField;

import javax.swing.JLabel;

public abstract class Stringintabst extends Subpanel {

TextField namefield = new TextField ("", 20);
JLabel name= new JLabel ("Name :");

TextField codefield = new TextField ("", 20);
JLabel code = new JLabel ("Cmd line code :");

TextField prefixfield = new TextField ("", 5);
JLabel prefix = new JLabel ("Prefix :");

TextField joinerfield = new TextField ("", 3);
JLabel joiner = new JLabel ("Joiner :");

Component defaultfield ;
JLabel deflt = new JLabel ("Default :");

Checkbox hidden = new Checkbox("Hidden ", true);

public Stringintabst (){
super();
panelname= new JLabel ("String");

init();
}

private void init() {

c.gridx=1;
this.add(name,c);

c.gridx=2;
this.add(namefield,c);

c.gridx=3;
this.add(code,c);

c.gridx=4;
this.add(codefield,c);

c.gridx=5;
this.add(hidden,c);

c.gridy=1;
c.gridx=0;
this.add(prefix,c);

c.gridx=1;
this.add(prefixfield,c);

c.gridy=2;
c.gridx=0;
this.add(joiner,c);

c.gridx=1;
this.add(joinerfield,c);

c.gridy=1;
c.gridx=3;
this.add(deflt,c);

//c.gridx=4;
//this.add(defaultfield,c);
}
}


voila ca fait peut etre beaucoup de code pour une erreur bete mais on sait jamais...

Merci BEAUCOUP a quiconque m'aidera (et si en plus d'une solution j'ai une explication qui me fait comprendre mon erreur je serais des plus heureux).

PS : desole pour les maniaques de la langue francaise donc je fais partie mais je suis sur un clavier qwerty et je sais pas comment mettre les accents...