IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Jar et images


Sujet :

avec Java

  1. #21
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 74
    Points
    74
    Par défaut
    En faite au départ je me suis dit j'ai une boucle infini.
    J'ai regarder ou sa bloquez et c'est durant la lecture fichier.

    Ca donne l'impression que la ligne ne sort pas du buffer.

    D'ou l'effect Sleep.
    Une fois que je rentre dans la fonction d'analyse ca revient a attandre.
    ( comme un Sleep dans un thread )
    Le programme ne semble plus vouloir reprendre et attend indéfiniment.
    ( plus de 5 a 10 minute, se qui pour une lecture de fichier et anormal
    et le temps de chargement sans le fichier et d'environ 1/2 seconde )

    Donc je pense que le buffer ne se vide pas, donc la ligne ne se remplis pas, et donc mon programme attend que le disque dur envoye les données.
    Je pense que ca peut être dur a des lignes très courte.

    Si vous voyer une autre explication, je suis prenneur car la mienne semble un peut dur avec sun, qui en général font les choses proprement.
    Elle aurez par contre été logique dans du c mal écrit...

  2. #22
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Si tu as un blocage dans la lecture du fichier, c'est un des appels .readLine() qui attend une fin de ligne (ou fichier) afin de retourner la ligne.

    Place une trace avant chaque .readLine(), tu trouveras plus facilement où cela bloque. Si c'est dès le 1er appel, revoit la position de ton fichier dans la ressource.

  3. #23
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 74
    Points
    74
    Par défaut
    Alors la je comprend pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    try {
    			file = new BufferedReader(new InputStreamReader(fileStream));
    			// Interpretation du fichier
    			System.out.println("Avant x");
    			// Recuperation de la taille de la carte
    			if ((ligne = file.readLine()) != null)
    				x = Integer.valueOf("0"+ligne.replaceAll("[^0-9]", ""));
    			System.out.println("Avant y");
    			if ((ligne = file.readLine()) != null)
    				y = Integer.valueOf("0"+ligne.replaceAll("[^0-9]", ""));
    			// Verification de la taille :
    			if (x!=Parametres.getX() || y!=Parametres.getY()){
    				// Mise a jour de la taille :
    				Parametres.setDimension(x,y);
    			}// Maintenant que l'on as la dimention, on cree le tableaux
    			terrain = new Terrain[Parametres.getX()][Parametres.getY()];
    			// On rempli les cases selon le fichier
    			System.out.println("les lignes :");
    			while ((ligne = file.readLine()) != null){
    				System.out.println("une ligne");
    				if ( i >= x*y ){
    					System.err.println("FileMap -> nombre de ligne incorrect. ( Trop de ligne )");
    					return;
    				}
    				terrain[i/y][i%y] = new Terrain(ligne);
    				i++;// On as rempli une case de plus
    			}
    J'ai donc juste ajouter les System.out.println() pour avoir une trace.
    Et ca marche ^^ !

    Si on peut m'expliquez !
    Le out :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [DidUngar@localhost jdr]$ java -jar deus.jar
    Avant x
    Avant y
    Exception during event dispatch:
    les lignes :
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    une ligne
    java.lang.NullPointerException
       at javax.swing.RepaintManager.commitBuffer(libgcj.so.8rh)
       at javax.swing.JComponent.paintDoubleBuffered(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately2(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately(libgcj.so.8rh)
       at javax.swing.RepaintManager.paintDirtyRegions(libgcj.so.8rh)
       at javax.swing.RepaintManager$RepaintWorker.run(libgcj.so.8rh)
       at java.awt.event.InvocationEvent.dispatch(libgcj.so.8rh)
       at javax.swing.RepaintManager$RepaintWorkerEvent.dispatch(libgcj.so.8rh)
       at java.awt.EventQueue.dispatchEvent(libgcj.so.8rh)
       at java.awt.EventDispatchThread.run(libgcj.so.8rh)
    Nouvelle personne créé en : (9,4)
    Nouvelle personne créé en : (9,1)
    Nouvelle personne créé en : (9,3)
    Nouvelle personne créé en : (9,2)
    Nouvelle personne créé en : (9,0)
    Nouvelle personne créé en : (0,0)
    Nouvelle personne créé en : (0,4)
    Nouvelle personne créé en : (0,0)
    Nouvelle personne créé en : (0,3)
    Nouvelle personne créé en : (0,1)
    Nouvelle personne créé en : (9,4)
    Nouvelle personne créé en : (9,0)
    Nouvelle personne créé en : (9,4)
    Nouvelle personne créé en : (9,0)
    Nouvelle personne créé en : (9,3)
    Nouvelle personne créé en : (9,0)
    En plus j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception during event dispatch:
    Et je sais pas d'ou elle vient.

  4. #24
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    C'est bizarre le besoin d'ajouter un println()....

    Je pense que tu as un probléme dans le gestion de tes événements dans Swing. L'erreur que tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception during event dispatch:
    provient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    java.lang.NullPointerException
       at javax.swing.RepaintManager.commitBuffer(libgcj.so.8rh)
       at javax.swing.JComponent.paintDoubleBuffered(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately2(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately(libgcj.so.8rh)
       at javax.swing.JComponent.paintImmediately(libgcj.so.8rh)
       at javax.swing.RepaintManager.paintDirtyRegions(libgcj.so.8rh)
       at javax.swing.RepaintManager$RepaintWorker.run(libgcj.so.8rh)
       at java.awt.event.InvocationEvent.dispatch(libgcj.so.8rh)
       at javax.swing.RepaintManager$RepaintWorkerEvent.dispatch(libgcj.so.8rh)
       at java.awt.EventQueue.dispatchEvent(libgcj.so.8rh)
       at java.awt.EventDispatchThread.run(libgcj.so.8rh)
    qui est du l'affichage de la fenêtre par Swing.

    Je pense aussi que tu 'blocage' est due à une mauvaise gestion des événements dans Swing... bref, que presque tout tes problémes proviennent de là.

  5. #25
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 74
    Points
    74
    Par défaut
    J'ai 3 classe pour l'interface :
    InterfaceIntroduction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    92
    93
    94
    95
    96
    97
    package simulation;
     
    import java.awt.event.ActionEvent;
    import javax.swing.*;
     
     
     
    public class InterfaceIntroduction {
    	public static String choixDuTerrain(){
    		/* interface de demande */
    		class Fl_Ask extends Thread implements Runnable, java.awt.event.ActionListener {
    			JFrame fenaitre = new JFrame();
    			JComboBox listeRue = new JComboBox();
    			JButton bt = new JButton("Validez");
    			public void run(){
    				/* Asprect général de la fenaitre : */
    				fenaitre.setTitle("Bienvenue :");
    				fenaitre.setSize(400,135);
    				fenaitre.setLocationRelativeTo(null);
    				fenaitre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				fenaitre.setIconImage(new ImageIcon(getClass().getResource("img/favicon.gif")).getImage());
     
    				/* Zone de positionnement : */
    				java.awt.BorderLayout struct = new java.awt.BorderLayout();
    				fenaitre.setLayout(struct);
    				/* Text de présentation du choix : */
    				JLabel lb = new JLabel("<html>Notre projet contient plusieurs lieux disponibles.<br>"
    						+ "Vous pouvez choisir le type de cartes que vous désirez.<br>"
    						+ "Faites votre choix :</html>");
    				fenaitre.add("North",lb);
     
    				/* Liste des choix possible : */
    				if ( listeRue.getItemCount()==0){
    					// Ajout manuel, car le chargement a planter.
    					listeRue.addItem("champ");
    					listeRue.addItem("chemin");
    					listeRue.addItem("route");
    					listeRue.addItem("avenue");
    					listeRue.addItem("place");
    				}
     
    				fenaitre.add("Center",listeRue);
     
    				/* Bouton de validation : */
    				bt.addActionListener(this);
    				fenaitre.add("South",bt);
     
    				/* Lancement */
    				//fenaitre.setAlwaysOnTop(true);
    				fenaitre.setVisible(true);
    			}
    			public void actionPerformed(ActionEvent e){
    				synchronized (this) {
    					this.notify();
    				}
    			}
    			public String getText(){return listeRue.getSelectedItem().toString();}
    			public void dispose(){ fenaitre.dispose(); }
    		}
    		Fl_Ask fl_Ask = new Fl_Ask();
    		String text="";
    		synchronized (fl_Ask) {
    			fl_Ask.run();
    			try {
    				/*
    				 * Je part du principe que :
    				 * Un utilisateur ira forcement moin vite pour cliquer
    				 * que l'ordinateur pour  changer de thread
    				 * Il ne peut donc pas y avoir de bloquage inter-thrad.
    				 */
    				fl_Ask.wait();
    				/*
    				 * Comme on as récupéré les informations
    				 * on peut quitter cette fenaître
    				 */
    				fl_Ask.fenaitre.setVisible(false);
    				/*
    				 * On récupére la valeur du terrain que l'on désirez avoir.
    				 */
    				text = fl_Ask.getText();
    				/*
    				 * Je relache le thread de l'interface de la page d'introduction
    				 */
    				fl_Ask.dispose();
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		}
    		return text;
    	}
    	/** Testeur **/
    	public static void main(String[] args){
    		System.out.println(
    				InterfaceIntroduction.choixDuTerrain()
    		);
    	}
    }
    InterfaceParametres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    package simulation;
    /*
     * Class de gestion de autre class
     * Elle sert d'interface
     */
     
    import java.awt.Color;
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
     
    import javax.swing.*;
     
    import javax.swing.event.ChangeListener;
     
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
     
     
    public class InterfaceParametres extends AbstractAction implements WindowListener {
    	/** Interface **/
    	JTextField a						= new JTextField( Double.toString(Parametres.getA()) , 30 );
    	JTextField friction					= new JTextField( Double.toString(Parametres.getFriction()) , 30 );
    	JTextField vitesseMoyenneEstOuest	= new JTextField( Integer.toString(Parametres.getVitesseMoyEst()) , 30 );
    	JTextField vitesseMoyenneOuestEst	= new JTextField( Integer.toString(Parametres.getVitesseMoyEst()) , 30 );
    	JTextField mobiliteMoyenneEstOuest	= new JTextField( Double.toString(Parametres.getMobiliteMoyEst()) , 30 );
    	JTextField mobiliteMoyenneOuestEst	= new JTextField( Double.toString(Parametres.getMobiliteMoyOuest()) , 30 );
    	JTextField afluance					= new JTextField( Integer.toString(Parametres.getNbNewPersonne()) , 30 );
     
    	/** Outils **/
    	private JFrame fenaitre;
     
    	/** Constructeur 
             *      - Mets en place la fenaitre
             *      - Mets en place les boutons
             *      - Relie les éléments a leur action
             **/
    	public InterfaceParametres(){
    		/* Fenaitre */
    		super();
    		/* Initialisation de l'Affichage */
    		fenaitre = new JFrame();
    		fenaitre.setTitle("Paramètres.");
    		fenaitre.setSize(400,400);
    		fenaitre.setIconImage(new ImageIcon(getClass().getResource("img/favicon.gif")).getImage());
    		fenaitre.setLocationRelativeTo(null); //On centre la fentre sur l'écran
    		fenaitre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		/* Mise en place des Zones de positionnement */
    		JPanel panel = new JPanel();
    		BorderLayout struct = new BorderLayout();
    		fenaitre.setContentPane(panel);
    		panel.setLayout(struct);
    		panel.setBackground(Color.lightGray);
    		panel.setForeground(Color.WHITE);
     
    		/** Haut : ( North ) */
    		/* 
    		 * Cette zone va permettre la gestion de la temporalité
    		 * - Vitesse
    		 * - Mise en pause / reprise
    		 * - Etape
    		 */
    		JPanel panelNorth = new JPanel();
    		panelNorth.add(new JLabel("<html><font color=black>Selection des paramètres : </font></html>"));
    		panel.add(panelNorth,BorderLayout.NORTH);
    		panelNorth.setBackground(panel.getBackground());
    		panelNorth.setForeground(panel.getForeground());
     
    		/** Bas : ( South ) */
    		/*
    		 * Partie de la gestion de la foule
    		 * Une ComboBox permettra la selection de la masse humaine representé.
    		 */
    		JPanel panelSouth = new JPanel();
    		JButton bt_Valider = new JButton("Valider");
    		bt_Valider.addActionListener(this);
    		// Rouage
    		JButton bt_Img = new JButton( new ImageIcon(getClass().getResource("img/param.gif")) );
    		bt_Img.addActionListener(this);
    		bt_Img.setToolTipText("Valider");
    		panelSouth.add(bt_Img);
    		// Bouton Valider
    		panelSouth.add(bt_Valider);
    		// Rouage
    		bt_Img = new JButton( new ImageIcon(getClass().getResource("img/param.gif")) );
    		bt_Img.addActionListener(this);
    		bt_Img.setToolTipText("Valider");
    		panelSouth.add(bt_Img);
    		/* Placement de la zone */
    		panel.add(panelSouth,BorderLayout.SOUTH);
    		panelSouth.setBackground(panel.getBackground());
    		panelSouth.setForeground(panel.getForeground());
     
    		/** Centre : ( Center ) */
    		/*
    		 * Cette zone sera géré part une autre fonction
    		 * La préparation de l'affichage de la carte est trop complexe
    		 * Et se doit donc d'etre séparé du constructeur dans une fonction privée
    		 */
    		JPanel panelCenter = new JPanel();
    		panel.add(panelCenter,BorderLayout.CENTER);
    		panelCenter.setBackground(panel.getBackground());
    		panelCenter.setForeground(panel.getForeground());
    		// Création des champs
    		panelCenter.setLayout(new GridLayout(9,2));
    		panelCenter.add(new JLabel("<html><font color=black>a :</font></html>"));
    		panelCenter.add(a);
    		panelCenter.add(new JLabel("<html><font color=black>friction : </font></html>"));
    		panelCenter.add(friction);
    		panelCenter.add(new JLabel("<html><font color=black>vitesseMoyenneEstOuest : </font></html>"));
    		panelCenter.add(vitesseMoyenneEstOuest);
    		panelCenter.add(new JLabel("<html><font color=black>vitesseMoyenneOuestEst : </font></html>"));
    		panelCenter.add(vitesseMoyenneOuestEst);
    		panelCenter.add(new JLabel("<html><font color=black>mobiliteMoyenneEstOuest : </font></html>"));
    		panelCenter.add(mobiliteMoyenneEstOuest);
    		panelCenter.add(new JLabel("<html><font color=black>mobiliteMoyenneOuestEst : </font></html>"));
    		panelCenter.add(mobiliteMoyenneOuestEst);
    		panelCenter.add(new JLabel("<html><font color=black>affluence ( vitesse d'arrivée ) : </font></html>"));
    		panelCenter.add(afluance);
    //		panelCenter.add(new JLabel("<html><font color=black>limiteTimer : </font></html>"));
    //		panelCenter.add(new JTextField( "???" , 30 ));
    //		panelCenter.add(new JLabel("<html><font color=black>frecanceTimer : </font></html>"));
    //		panelCenter.add(new JTextField( "???" , 30 ));
     
     
     
    		/* Afficher la fenaitre */
    		fenaitre.setVisible(true);
    	}
     
    	/** Interface **/
    	public void actionPerformed(ActionEvent e) {
    		/* On mets a jour les parametres */
    		Parametres.setA(					new Double(a						.getText()) );
    		Parametres.setFriction(				new Double(friction					.getText()) );
    		Parametres.setVitesseMoyenneEst(	new Integer(vitesseMoyenneEstOuest	.getText()) );
    		Parametres.setVitesseMoyenneOuest(	new Integer(vitesseMoyenneOuestEst	.getText()) );
    		Parametres.setMobiliteMoyenneEst(	new Double(mobiliteMoyenneEstOuest	.getText()) );
    		Parametres.setMobiliteMoyenneOuest(	new Double(mobiliteMoyenneOuestEst	.getText()) );
    		Parametres.setNbNewPersonne(		new Integer(afluance				.getText())	);
    		/* On actualise cette fenaitre */
    		a									.setText( Double	.toString(Parametres.getA())			 );
    		friction							.setText( Double	.toString(Parametres.getFriction())		 );
    		vitesseMoyenneEstOuest				.setText( Integer	.toString(Parametres.getVitesseMoyEst()) );
    		vitesseMoyenneOuestEst				.setText( Integer	.toString(Parametres.getVitesseMoyOuest()) );
    		mobiliteMoyenneEstOuest				.setText( Double	.toString(Parametres.getMobiliteMoyEst()) );
    		mobiliteMoyenneOuestEst				.setText( Double	.toString(Parametres.getMobiliteMoyOuest()) );
    		afluance							.setText( Integer	.toString(Parametres.getNbNewPersonne()) );
    	}
     
    	/* Action sur la fenaitre */
    	public void windowOpened(WindowEvent e) {}
    	public void windowClosing(WindowEvent e) {
    		fenaitre.dispose();
    	}
    	public void windowClosed(WindowEvent e) {}
    	public void windowIconified(WindowEvent e) {}
    	public void windowDeiconified(WindowEvent e) {}
    	public void windowActivated(WindowEvent e) {}
    	public void windowDeactivated(WindowEvent e) {}
     
     
     
     
     
     
     
    	/** Testeur **/
    	public static void main(String[] args){
    		new InterfaceParametres();
    	}
    }
    InterfaceIntroduction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    92
    93
    94
    95
    96
    97
    package simulation;
     
    import java.awt.event.ActionEvent;
    import javax.swing.*;
     
     
     
    public class InterfaceIntroduction {
    	public static String choixDuTerrain(){
    		/* interface de demande */
    		class Fl_Ask extends Thread implements Runnable, java.awt.event.ActionListener {
    			JFrame fenaitre = new JFrame();
    			JComboBox listeRue = new JComboBox();
    			JButton bt = new JButton("Validez");
    			public void run(){
    				/* Asprect général de la fenaitre : */
    				fenaitre.setTitle("Bienvenue :");
    				fenaitre.setSize(400,135);
    				fenaitre.setLocationRelativeTo(null);
    				fenaitre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				fenaitre.setIconImage(new ImageIcon(getClass().getResource("img/favicon.gif")).getImage());
     
    				/* Zone de positionnement : */
    				java.awt.BorderLayout struct = new java.awt.BorderLayout();
    				fenaitre.setLayout(struct);
    				/* Text de présentation du choix : */
    				JLabel lb = new JLabel("<html>Notre projet contient plusieurs lieux disponibles.<br>"
    						+ "Vous pouvez choisir le type de cartes que vous désirez.<br>"
    						+ "Faites votre choix :</html>");
    				fenaitre.add("North",lb);
     
    				/* Liste des choix possible : */
    				if ( listeRue.getItemCount()==0){
    					// Ajout manuel, car le chargement a planter.
    					listeRue.addItem("champ");
    					listeRue.addItem("chemin");
    					listeRue.addItem("route");
    					listeRue.addItem("avenue");
    					listeRue.addItem("place");
    				}
     
    				fenaitre.add("Center",listeRue);
     
    				/* Bouton de validation : */
    				bt.addActionListener(this);
    				fenaitre.add("South",bt);
     
    				/* Lancement */
    				//fenaitre.setAlwaysOnTop(true);
    				fenaitre.setVisible(true);
    			}
    			public void actionPerformed(ActionEvent e){
    				synchronized (this) {
    					this.notify();
    				}
    			}
    			public String getText(){return listeRue.getSelectedItem().toString();}
    			public void dispose(){ fenaitre.dispose(); }
    		}
    		Fl_Ask fl_Ask = new Fl_Ask();
    		String text="";
    		synchronized (fl_Ask) {
    			fl_Ask.run();
    			try {
    				/*
    				 * Je part du principe que :
    				 * Un utilisateur ira forcement moin vite pour cliquer
    				 * que l'ordinateur pour  changer de thread
    				 * Il ne peut donc pas y avoir de bloquage inter-thrad.
    				 */
    				fl_Ask.wait();
    				/*
    				 * Comme on as récupéré les informations
    				 * on peut quitter cette fenaître
    				 */
    				fl_Ask.fenaitre.setVisible(false);
    				/*
    				 * On récupére la valeur du terrain que l'on désirez avoir.
    				 */
    				text = fl_Ask.getText();
    				/*
    				 * Je relache le thread de l'interface de la page d'introduction
    				 */
    				fl_Ask.dispose();
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		}
    		return text;
    	}
    	/** Testeur **/
    	public static void main(String[] args){
    		System.out.println(
    				InterfaceIntroduction.choixDuTerrain()
    		);
    	}
    }
    Ca peut venir d'ou ?

  6. #26
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 74
    Points
    74
    Par défaut
    Comme ca fonctionne et que l'on s'ecarte du sujet je vais mettre un résolu.

    Merci a tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Un .Jar avec images
    Par Neotaxi dans le forum Langage
    Réponses: 11
    Dernier message: 07/05/2012, 12h02
  2. Problème exportation JAR avec images
    Par oliwan dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 22/06/2009, 20h08
  3. [JAR] Les images manquent
    Par doons dans le forum Général Java
    Réponses: 3
    Dernier message: 23/10/2008, 09h22
  4. Jar et Images
    Par Ouaibou dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 20/04/2008, 23h03
  5. [Applet][JTextPane][HTML]Accès a une image du JAR
    Par SamDaKap dans le forum Applets
    Réponses: 4
    Dernier message: 10/08/2004, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo