Précédent   Forum du club des développeurs et IT Pro > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/10/2012, 11h56   #1
Yann_69
Membre du Club
 
Homme Yann
Étudiant
Inscription : avril 2012
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Yann
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2012
Messages : 142
Points : 45
Points : 45
Par défaut [Java] Affichage qui dépend de la version de Windows

Bonjour,

j'ai créé un logiciel en Java.
Il y a un problème d'affichage avec certains PC.

Aucun problème lorsque j'utilise le logiciel sous XP mais en l'utilisant sous Seven, l'affichage des boutons ou d'autres objets plante (les boutons n'ont plus la même forme, ...).

J'aimerai savoir si vous avez déjà eu ce problème.

Est-ce que cela vient de la version de Windows ?
32 ou 64 bits peut-il changer quelque chose ?

Comment y remédier ?

Merci pour vos commentaires.
Bonne journée.
Yann_69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2012, 15h45   #2
MoxxWell
Invité de passage
 
Homme
Développeur Java
Inscription : octobre 2012
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Java
Secteur : Distribution

Informations forums :
Inscription : octobre 2012
Messages : 3
Points : 2
Points : 2
Par défaut Version Java

as-tu la même version de java installé sur tes différents pc ?
MoxxWell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2012, 17h03   #3
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 278
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 18 278
Points : 32 757
Points : 32 757
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Il faut t'attendre, et c'est normal, à ce que ton application s'affiche différement sous windows , linux, mac os x, et même d'une version à l'autre de ces OS voir même d'un écran à l'autre (DPI différent = police différente). Quels layout as-tu utilisé? Poste une capture d'écran de ton problème et un peu de code.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2012, 07h23   #4
andry.aime
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 6 334
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 6 334
Points : 9 923
Points : 9 923
Bonjour

Regarde du coté Look and Feel si cela peut t'intéresser.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 08h22   #5
Yann_69
Membre du Club
 
Homme Yann
Étudiant
Inscription : avril 2012
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Yann
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2012
Messages : 142
Points : 45
Points : 45
Voici un imprimé écran du logiciel sur mon pc (affichage correct) et un sur un pc utilisant seven (pb affichage).

Je n'ai pas utilisé de look and feel.
Le layout principalement utilisé est gridbaglayout.

Qu'en pensez-vous ?
Images attachées
Type de fichier : jpg pb affichage.JPG (26,8 Ko, 16 affichages)
Type de fichier : jpg affichage correct.JPG (20,6 Ko, 16 affichages)
Yann_69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 12h14   #6
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 278
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 18 278
Points : 32 757
Points : 32 757
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Ce ne sont pas des boutons standards, comment fais-tu l'affichage de ces boutons? Ca doit être dans tes méthodes de dessin custom que se trouve le bug. A vu de nez, je diras que tu essaie de dessiner par transparence partielle, mais que tu ne récupère pas le bon "fond" derrière le bouton.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 13h47   #7
Yann_69
Membre du Club
 
Homme Yann
Étudiant
Inscription : avril 2012
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Yann
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2012
Messages : 142
Points : 45
Points : 45
Merci pour vos réponses. Désolé de ne réagir que maintenant (je n'ai pas pu faire autrement).

Voici la classe permettant de créer les boutons :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
 
import javax.swing.JButton;
 
public class JCoolButton extends JButton {
 
	private int inset = 5;
	private Color couleurBas = new Color(0,0,0,200);
	private Color buttonColor = couleurBas;
 
 
	public JCoolButton(){
		super();
		setContentAreaFilled(false);
		setForeground(Color.white);
	}
 
 
	public JCoolButton(String aNameString){
		super(aNameString);
		setContentAreaFilled(false);
		setForeground(Color.white);
	}
 
 
 
	protected void paintComponent(Graphics g)
	{
 
		Graphics2D g2d = (Graphics2D) g;
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
		int vWidth = getWidth();
		int vHeight = getHeight();
 
		// Calculate the size of the button
		int vButtonHeight = vHeight - (inset * 2);
		int vButtonWidth = vWidth - (inset * 2);
		int vArcSize = vButtonHeight;
 
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
		// Create the gradient paint for the first layer of the button
		Color vGradientStartColor =  buttonColor.darker().darker().darker();
		Color vGradientEndColor = buttonColor.brighter().brighter().brighter();
		Paint vPaint = new GradientPaint(0, inset, vGradientStartColor, 0, vButtonHeight, vGradientEndColor, false);
		g2d.setPaint(vPaint);
 
		// Paint the first layer of the button
		g2d.fillRoundRect(inset, inset, vButtonWidth, vButtonHeight, vArcSize, vArcSize);
 
		// Calulate the size of the second layer of the button
		int vHighlightInset = 2;
		int vButtonHighlightHeight = vButtonHeight - (vHighlightInset * 2);
		int vButtonHighlightWidth = vButtonWidth - (vHighlightInset * 2);
		int vHighlightArcSize = vButtonHighlightHeight;
 
 
		// Règle la police du bouton
/*
		Font fontEntered = new Font(Font.DIALOG, Font.BOLD, 12);
		setFont(fontEntered);
*/		
		// Create the paint for the second layer of the button
//		vGradientStartColor = Color.BLUE;
		vGradientStartColor = new Color(0,0,255,200);
//		vGradientStartColor = new Color(255,255,255,200);
		vGradientEndColor = buttonColor.brighter();
		vPaint = new GradientPaint(0,inset+vHighlightInset,vGradientStartColor,0,inset+vHighlightInset+(vButtonHighlightHeight/2), buttonColor.brighter(), false);
 
		// Paint the second layer of the button
		g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,.8f));
		g2d.setPaint(vPaint);
 
		g2d.fillRoundRect(inset+vHighlightInset,inset+vHighlightInset,vButtonHighlightWidth,vButtonHighlightHeight,vHighlightArcSize,vHighlightArcSize);
 
		RoundRectangle2D.Float r2d =new RoundRectangle2D.Float(inset, inset, vButtonWidth, vButtonHeight, vArcSize, vArcSize);
		g2d.clip(r2d);		
		g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
		super.paintComponent(g);
 
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
	}
}
Yann_69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 14h04   #8
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 278
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 18 278
Points : 32 757
Points : 32 757
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Sans pouvoir pointer ce qui pose exactement problème, plusieurs remarques:

1) tu bidouille ton Graphics (nottement avec un appel à clip) avant de la passer à la sous routine, ça peux perturber la sous routine paintComponent qui serait prévue pour un graphics dans l'état d'origine. Pour jouer sur le Graphics, il vaut mieux faire:
Graphics2D g2d = (Graphics2D) g.create(); // on travaille avec une copie

2) ton super.paintComponent() est à la fin, d'habitue on le met au début

3) swing utilise des look and feel pour faire le dessin, il est préférable de te baser dessus en étendant BasicButtonUI et en l'appliquant à tes JCoolButton.

4) il existe pas mal de lookandfeel customizable sur le marché pour faire ce que tu veux faire sans besoin de code et s'appliquant à des JButton standards

Dernier détails, au niveau de la gestion de la transparences partielle et des effets composites, certaines jvm sur certains OS on eu des soucis à une époque. Tu peux essayer les paramètres suivants pour java


Code :
1
2
3
-Dsun.java2d.d3d=false
-Dsun.java2d.ddoffscreen=false
-Dsun.java2d.noddraw=true
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h52.


 
 
 
 
Partenaires

Hébergement Web