Bonjour,
Je suis confronté à un problème énervant : il s'agit d'un bug graphique en Java!
Je tourne en JRE 1.5.0_06, et dans l'immédiat je ne peux pas me permettre de mettre à jour le JRE sur mon application.
Voici un code simplifié :
Berline.java :
Code :
- import javax.swing.SwingUtilities;
- public class Berline {
- private static String[] _args;
- public static void main(final String[] args) {
- _args = args;
- final long starttime = System.currentTimeMillis();
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- try { createAndShowGUI(); }
- catch(Exception e) { e.printStackTrace(); }
- }
- });
- }
- private static void createAndShowGUI() {
- new MainFrame(_args);
- }
- }
|
MainFrame.java
Code :
- import java.awt.Color;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class MainFrame extends JFrame {
- private static final long serialVersionUID = 1L;
- public MainFrame(String[] args) {
- final JPanel panel = new JPanel();
- panel.setBackground(Color.yellow);
- panel.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- panel.setBackground(createColor(2.0));
- System.out.println("Le JPanel est maintenant de couleur : " + panel.getBackground());
- }
- });
- this.setContentPane(panel);
- this.setTitle("Test Frame" );
- this.setSize(640, 480);
- this.setLocationRelativeTo(null);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- public Color createColor(double intensity) {
- double moy, lib;
- double r, g, b;
- moy = intensity/3;
- lib = Math.min(moy, 1-moy);
- r = Math.random() * 2 * lib + moy - lib;
- intensity -= r;
- moy = intensity / 2;
- lib = Math.min(moy, 1-moy);
- g = Math.random()* 2 *lib + moy - lib;
- intensity -= g;
- b = intensity;
- return new Color((float)r, (float)g, (float)b);
- }
- }
|
Ce sert juste à réaliser une fenêtre de base, selon les règles. (le SwingUtilities.invokeLater sert à gérer la partie graphique dans une autre pile d'exécution il me semble)
Cependant, lorsque j'exécute ce code sur différentes machines, seules quelques unes m'affichent une fenêtre jaune de base. les autres m'affiche une fenêtre grisée, vide, comme quand un programme plante (voir capture d'écran ci-dessous)
Le seul moyen pour débloquer cette situation est d'agrandir la fenêtre avec le bouton de la barre de titre, puis de la restaurer. La redimensionner ne fonctionne même pas.
Le bug se produit sur des PC dont le matériel et l'environnement logiciel est le même que sur d'autres sur lesquels ça fonctionne...
Si quelqu'un a déjà rencontré ce problème, ou si vous avez une idée, je suis prenneur.
Minimus.