2010-05-24 12 views
1

J'ai fait un projet qui montre l'inventaire du stock d'un magasin.
Dans cet inventaire, le logiciel doit stocker les données des produits avec leurs images.
Il y a un problème ...
Bcz des lots d'actions, l'écran sur lequel est l'image se charge de prendre beaucoup de temps.
Alors, je pensais que je devrais donner le cadre dans lequel il y aura sur l'étiquette qui montrera le « Logiciel de chargement ».
Mais maintenant, quand je suis en train visible = true pour cette image, mais BCZ de cette image écran problème de chargement de classe mon corps ne montre pas correctement. J'ai mis screen shot, maintenant mon code. Comment peut afficher un message que l'autre classe est en train de charger ou de "charger le logiciel" dans cette situation.Cadre montrant le problème

Juste pour le savoir .... cette classe n'est pas l'écran sur lequel l'image se charge.

Répondre

3
  1. Il est difficile de répondre à cette question parce qu'il ne sait pas ce que les effets (Swing sage) sont des appels à new AddInventoryScreen(); et new showStock();. Vous ne devez toucher que l'interface utilisateur que l'utilisateur voit à la fin (lorsque tout le traitement est terminé).

  2. Vous devriez vraiment supprimer des méthodes qui prendront beaucoup de temps dans leur propre thread (voir SwingWorker. Il existe des alternatives pour Java 5.0). De cette façon, l'interface utilisateur ne sera pas bloquée pendant le traitement.

  3. Peut-être ce que vous voulez est un Splash Screen?

1

Essayez d'appeler validate(); et pack(); méthodes avant d'appeler f.setVisible(true);

Votre code peut être

validate(); 
pack(); 
f.setVisible(false); 
1

Je pense que un gros problème dans votre code (peut-être pas le seul cependant) est le fait que vous devez utiliser un thread différent pour les opérations longues.

Les opérations GUI (création de composants pivotants, ajout aux panneaux, changement d'étiquettes ...) doivent être effectuées exclusivement dans le "EDT" et doivent être courtes (typiquement inférieures à 100ms ou même 50ms).

opérations longues peuvent se faire facilement par un autre thread si vous utilisez l'API SwingWorker (partie de JDK 1.6).

Questions connexes