JAVA Window seven 64 bits ?

Résolu
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011 - 30 juin 2011 à 10:39
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 30 juin 2011 à 16:29
Bonjour,

Je suis nouveau sur le forum. Je développe pour mon entreprise une application JAVA, qui permet de montrer aux clients les "nouveautés".

A coté de cela je réalise des modélisations 3D (+ animations) sous Maya, je travaille donc sur un Seven 64bits. J'utilise Eclipse pour programmer et j'ai voulu faire un test de portabilité.

J'ai crée le .jar, bilan :

Mon appli bug sur mon PC, mais fonctionne sur un XP... Les textes des boutons s'affichent tous les uns sur les autres, ça fout un bordel monstre ! De plus quand je clique sur un bouton, au bout d'un certain nombre de fois il affiche la page correspondante DANS le bouton... Pas bien !!

Je ne comprend pas et me demande si le problème ne vient pas de mon système. Si oui comment le régler ?

Je me suis formé tout seul en Java donc pas trop de mot savant svp

Merci d'avance ! (De la part de mon DG )

15 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 13:58
Tu parles d'un .jar exécutable ? Je pense que oui.

Tu as certainement mal spécifié le chemin ou se trouve cette icone (je pense) tu as utilisé un chemin relatif ? absolu ?

Dans tous les cas, j'ai fait un tutoriel sur la facon d'insérer les images dans un .jar, je te conseil de le lire
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 10:47
Normalement en Java, tu n'as aucun soucis de portabilité, je passe depuis des années de windows, à linux sans aucun soucis alors j'imagine que de windows à windows, tout devrait bien se passer.

Le seul soucis peut être une question de version de la jvm (la version de l'installation java) si ce n'est pas la même, tu peux avoir des bugs mais je ne pense pas que ca vienne de ca.

Si ton code n'est pas trop long, peux tu le publier ? Tu utilises une interface Swing ?
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 11:08
Alors tu abordes un autre soucis... J'utilise à la fois la swing et la awt. J'ai vu que ça causait un problème s'affichage (superposition). Mais est ce que cela changerait de conséquence suivant XP ou seven ?

Le problème est que j'ai organisé le code en différentes classes (j'ai appris avec le tuto du siteduzero) donc une classe fenêtre qui crée les composants de celle-ci, une autre qui crée les boutons,...

Je te file ces deux là. Pour les version de Java, ceux sont les mêmes...

Classe Fenetre
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;



@SuppressWarnings("serial")
public class Fenetre extends JFrame
{

private JPanel container =  new JPanel();
private Banniere PanelHaut = new Banniere();
//Creation of all buttons
private Bouton bouton1 = new Bouton("Analyse");
private Bouton bouton2 = new Bouton("Débit");
private Bouton bouton3 = new Bouton("Pression & Température");
private Bouton bouton4 = new Bouton("Acquisition & Données");
private Bouton bouton5 = new Bouton("Automates & Supervision");
private Bouton bouton6 = new Bouton("SNCC & Sécurité");
private Bouton bouton7 = new Bouton("Vigilantplant");
private Bouton bouton8 = new Bouton("Home");
//Creation of all "tags"
final static String s1 = "fenetre 1";
final static String s2 = "fenetre 2";
final static String s3 = "fenetre 3";
final static String s4 = "fenetre 4";
final static String s5 = "fenetre 5";
final static String s6 = "fenetre 6";
final static String s7 = "fenetre 7";
final static String s8 = "fenetre 8";
//Creation of all Panels
private Panneau Cards = new Panneau();
private Analyse pan1 = new Analyse();
private Debit pan2 = new Debit();
private Pression pan3 = new Pression();
private Acquisition pan4 = new Acquisition();
private Automates pan5 = new Automates();
private Sncc pan6 = new Sncc();
private Vigilantplant pan7 = new Vigilantplant();
private Home pan8 =  new Home();
    
public Fenetre()
{
//Creation of the window
this.setIconImage(new ImageIcon("icone.jpg" ).getImage());
        this.setTitle("dudule");
        this.setSize(800, 600);
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        //Closing the window
        /*this.addWindowListener
        	(
        		new java.awt.event.WindowAdapter()
        		{
        			public void windowClosing(java.awt.event.WindowEvent evt)
        			{
        				hide();
        			} 
        		}
        	);*/
        
        //Creation of the organization
        container.setLayout(new BorderLayout());
        
        //Creation of the Top
        PanelHaut.setLayout(new GridLayout(2,4,5,5));	//Creation of table
        PanelHaut.add(bouton1);	//Add button1
        bouton1.addActionListener(new Bouton1Listener());	//Definition of his action
        PanelHaut.add(bouton2);
        bouton2.addActionListener(new Bouton2Listener());
        PanelHaut.add(bouton3);
        bouton3.addActionListener(new Bouton3Listener());
        PanelHaut.add(bouton4);
        bouton4.addActionListener(new Bouton4Listener());
        PanelHaut.add(bouton5);
        bouton5.addActionListener(new Bouton5Listener());
        PanelHaut.add(bouton6);
        bouton6.addActionListener(new Bouton6Listener());
        PanelHaut.add(bouton7);
        bouton7.addActionListener(new Bouton7Listener());
        PanelHaut.add(bouton8);
        bouton8.addActionListener(new Bouton8Listener());
        container.add(PanelHaut, BorderLayout.NORTH);
        
        //Creation of the page
        Cards.setLayout(new CardLayout());
        Cards.add(s8,pan8);
        Cards.add(s1,pan1);
        Cards.add(s2,pan2);
        Cards.add(s3,pan3);
        Cards.add(s4,pan4);
        Cards.add(s5,pan5);
        Cards.add(s6,pan6);
        Cards.add(s7,pan7);
        container.add(Cards, BorderLayout.CENTER);
        
        //To print the window
        this.setContentPane(container);
        
        this.setVisible(true);
}

class Bouton1Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s1);
        }
}

class Bouton2Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s2);
        }
}

class Bouton3Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s3);
        }  
}

class Bouton4Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s4);
        }
}

class Bouton5Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s5);
        }
}

class Bouton6Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s6);
        }  
}

class Bouton7Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s7);
        }
}

class Bouton8Listener  implements ActionListener
{
        public void actionPerformed(ActionEvent e)
        {
        	((CardLayout) Cards.getLayout()).show(Cards,s8);
        }  
}
}


Classe Bouton
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.swing.JButton;
import javax.imageio.ImageIO;

@SuppressWarnings("serial")
public class Bouton extends JButton{
 
private String name;
private Image img;
Color jauneY   = new Color(255,255,1);
         
public Bouton(String str){
        super(str);
        this.name = str;
        
        try {
              img = ImageIO.read(new File("fondBouton.png"));
        } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
        }
}

public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
       
GradientPaint gp = new GradientPaint(0, 0, Color.blue, 0, 20, Color.cyan, true);
g2d.setPaint(gp);
g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);

g2d.setColor(jauneY);
        
//Object permits to know properties of font, like the size !
FontMetrics fm = g2d.getFontMetrics();
//Of our font
int height = fm.getHeight();
//Of the string, with our font
int width = fm.stringWidth(this.name);
        
//To calculate the location of the string
g2d.drawString(this.name, this.getWidth() / 2 - (width / 2), (this.getHeight() / 2) + (height / 4));
}
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 11:17
Le code a l'air correct.

Pour l'utilisation de Swing et awt simultanément, c'est une utilisation classique qui ne devrait pas poser problème.

Franchement ce que du dis me surprend, et je ne vois pas ce qui peut poser problème. J'espère que d'autres personnes auront des réponses à ce sujet. Si je repense à quelque chose, je te le dirai.

Bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 11:20
Tu n'aurais pas utilisé des setLayout(null) sur certains panels pour positionner des composants manuellement ?
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 11:21
Lol merci ;)

Sinon autre "petite" question, quand je lance l'appli dans Eclipse j'ai bien mon icône personnalisé (en haut à gauche de la fenêtre) par contre quand je fais un .jar... j'ai la tasse JAVA, Pourquoi ?

Enfin sur XP, je ne vois pas l'image de fond de mes boutons, et si je passe sur un bouton il se met en surbrillance et le reste... Pourquoi ?

Peut-être que tout est lié ?
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 11:22
Non je savais même pas qu'on pouvait le faire !
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 13:59
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 14:09
Merci, je vais regarder ça...

Par contre j'ai toujours pas trouver pourquoi ça plante sur mon PC...

HELP !
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 14:30
Je pense que tu as trouvé mon problème sans le vouloir !!!!

Je m'explique : J'ai mis le dossier Image ou je voulais avoir toutes mes images... Moralité le fond de mes boutons n'étaient plus ou il était à la base. Eclispe n'a pas aimé et quand j'ai lancé mon programme dans l'environnement Eclipse j'ai eu le même problème (défaut d'affichage).

Mon problème serait donc du fait qu'il ne trouve pas l'image "fondBouton.png"

En mettant à jour le chemin, ça a marché.

Par contre ça ne marche toujours pas avec le .jar...

C'est bien ça ?

Image config Eclipse pour Jar Runnable
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 15:18
Ca y est !!!!! J'ai installé le plug-in FatJar ! Merci !!! Héhé Nickel !
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 15:22
Oui, c'est bien comme ca qu'on fait un .jar executable
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 15:23
Ca marche alors parfait, même si c'est involontaire, l'important c'est que tu t'en sortes.

L'erreur était difficile à trouver, elle ne vient pas de ton code java ni des versions installées mais de la gestion de tes images.
0
misterjoidf Messages postés 35 Date d'inscription jeudi 30 juin 2011 Statut Membre Dernière intervention 2 août 2011
30 juin 2011 à 16:16
En effet ! J'ai perdu deux jours pour ça... youpi !
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 16:29
On perd souvent du temps sur pas grand chose en informatique. Mais, il fallait en passer par là pour t'en sortir.
0
Rejoignez-nous
A voir également