2009-01-04 5 views
1

Je suis nouveau à java mais j'aurais pensé que c'était plutôt droit. J'affiche un JDialog pour l'entrée de l'utilisateur lors de l'importation de données à partir d'un fichier texte, mais la boîte de dialogue n'est pas peinte correctement sur d'autres ordinateurs.JDialog ne peignant pas

Sur mon ordinateur si j'exécute le programme à partir de NetBeans ou à partir de l'invite de commande, la boîte de dialogue s'affiche correctement. Si je lance le programme sur l'ordinateur, il est censé fonctionner, alors l'intérieur de la boîte de dialogue n'est pas peint - tout ce que je vois est la bordure de la boîte de dialogue, puis l'écran derrière lequel les contrôles devraient être. Cet ordinateur exécute XPSP2 et jre6 mise à jour 11.

Est-ce que quelqu'un sait ce qui pourrait mal se passer?

TIA

+0

Qu'est-ce que * votre * ordinateur (OS et JRE)? – Phil

+0

Je suggère d'obtenir une trace de pile avec ctrl-break sur la console (ctrl- sur Linux/Solaris) ou avec jstack ou jconsole. –

Répondre

0

Êtes-vous en train de faire tout votre travail lié swing dans la Event Dispatch Thread? Si oui, êtes-vous sûr de ne pas bloquer ce fil, ou de faire quelque chose de lent?

1

Nous devons voir votre code pour être sûr, mais il est très probable que vous effectuez l'importation sur le UI thread, depuis un code d'écoute - puisque vous utilisez le thread UI, aucun événement n'est traité jusqu'à ce que vous reveniez du auditeur.

La solution consiste à lancer un nouveau thread pour effectuer l'importation, puis de déclencher des événements pour mettre à jour l'interface graphique.

0

Exécutez le programme via un terminal de commande afin de voir si des exceptions sont émises par votre programme.

La commande sera: java -jar pathtoyourjar.jar

0

Le code fonctionne dans un seul endroit, mais pas dans un autre. Les ordinateurs ne sont pas magiques. Il doit donc y avoir une différence entre les deux ordinateurs. Le code est Swing GUI code. Les trois différences les plus probables sont les suivantes:

  • différent matériel vidéo
  • code différent (probablement des bibliothèques JRE)
  • Different Look swing et (probablement causée par différents OS)

Si quelque chose la connexion Java au matériel vidéo est différente sur les deux machines, essayez et découvrez quoi. Est-ce que votre machine et la machine cible ont les derniers pilotes vidéo, etc.? La machine cible dispose-t-elle de deux moniteurs ou d'une autre différence de matériel vidéo pouvant entraîner l'exécution de code différent?

Les différences entre les deux ordinateurs, par exemple JRE ou OS, peuvent entraîner l'exécution de code différent. Vous nous avez indiqué le JRE et l'OS pour la machine cible: qu'en est-il de votre machine? Pouvez-vous trouver une troisième machine, ou installer un autre JRE pour savoir si c'est la machine ou le JRE?

Il se peut que vous ayez des sensations différentes sur les deux machines. Essayez avec un Look and Feel différent.

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 

Juste pour mentionner le problème est probablement avec votre code quelque part, et le bug est plus susceptible d'être votre code que dans les bibliothèques Swing, mais au moins peut vous aider à comprendre pourquoi tout fonctionne sur une machine et pas sur un autre.