JAVA Window seven 64 bits ? [Résolu]

Signaler
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
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

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
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 ?
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

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));
}
}
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Tu n'aurais pas utilisé des setLayout(null) sur certains panels pour positionner des composants manuellement ?
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

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é ?
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

Non je savais même pas qu'on pouvait le faire !
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

Merci, je vais regarder ça...

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

HELP !
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

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
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

Ca y est !!!!! J'ai installé le plug-in FatJar ! Merci !!! Héhé Nickel !
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Oui, c'est bien comme ca qu'on fait un .jar executable
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
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.
Messages postés
35
Date d'inscription
jeudi 30 juin 2011
Statut
Membre
Dernière intervention
2 août 2011

En effet ! J'ai perdu deux jours pour ça... youpi !
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
On perd souvent du temps sur pas grand chose en informatique. Mais, il fallait en passer par là pour t'en sortir.