Je suis entrain de coder une application java, ( un jeu de domino)
J'utilise donc des images.
Le nombre de dominos peut changer, afin qu'ils s'adaptent à la taille de la fenêtre, les dominos changent de taille.
Pour cela j'utilise deux fonctions:
// avec une taille en pixels (=hauteur si portrait, largeur si paysage):
// //permet de redimensionner image
public Image scaleImage(Image source, int size) {
int width = source.getWidth(null);
int height = source.getHeight(null);
double f = 0;
if (width < height) {// portrait
f = (double) height / (double) width;
width = (int) (size / f);
height = size;
} else {// paysage
f = (double) width / (double) height;
width = size;
height = (int) (size / f);
}
setVisible(true);
return scaleImage(source, width, height);
}
// permet de redimensionner image
public static Image scaleImage(Image source, int width, int height) {
BufferedImage img = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) img.getGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(source, 0, 0, width, height, null);
// g.dispose();
return img;
}
A chaque fois que je fais une action, j'utilise ces fonctions, pour changer mon images. et ensuite les ajouter dans un JLabel. ce qui ne pose pas de problème.
J'ai crée une fonction qui permet de changer d'image lorsque l'on passe sur l'image:
le problème que j'ai ici, est que la première fois que je vais passer sur mon image, j'ai une image blanche qui apparait.
et j'ai crée une fonction qui change l'image lorsque l'on clique dessus, c'est pareil,
Lorsque l'on refait ses actions il n'y a plus de problème, mais la premières que l'on fait une de ses actions, l'image devient blanche ( pour chaque image il faut le faire une fois avant que ça marche)
Je ne comprends pas du tout pourquoi?? c'est là que j'ai besoin de votre aide.
Je souhaiterais aussi pouvoir changer mes images une par une (pour faire un effet), j'ai donc voulu utiliser un timer ( j'ai essayé de nombreuses méthodes), mais le problème c'est qu'il attend que j'ai fini toute mes fonctions avant de changer les images, elles apparaissent donc toute en même temps (les méthodes utilisées marchent, c'est juste au niveau des images), au lieu de changer une par une, il n'y a donc pas l'effet recherché.
lorsque je ne redimensionné pas la taille des images, il n'y avait pas de soucie.
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 6 juin 2013 à 12:08
Pour afficher les images une par une, tu peux utiliser des SwingWorker qui engloberait les opérations de indiquerDomino et indiquerDominoParti pour les déporter vers l'EDT.
Pour l'instant, tes dessins sont réalisés dans le thread principal, ce qui bloque l'affichage et donne l'impression que les images sont toutes affichées en même temps.
SwingWorker (Java SE 6).