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

AWT/Swing Java Discussion :

Insertion de données JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut Insertion de données JPanel
    Bonjour, je vous expliques mon problème. En ce moment j'ai une grille dessiné avec Graphics . Pour l'instant lorsque je clique donc une fenetre JFrame avec comme paramètre la case en question, s'ouvre et affiche les informations de la case en question. Maintenant je voulais passé à un système un peu plus estéthique pour moi j'ai inséré un JPanel à droite de la JFrame qui contient la grille et j'aimerais qui ses informations s'affiche dans ce JPanel.
    J'espère avoir été compréhensible.
    Merci pour votre futur aide.

  2. #2
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Comme ça sans code, je dirais que le mieux est d'étendre JPanel, de rajouter une méthode afficherCase qui prend la case en paramètre, et de faire à peu près la même chose qu'avec ta JFrame. Être plus précis sans code est compliqué...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Excuse moi alors voilà ma grille je la dessine de cette facon la :

    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
     
    public void grilleGraphique(Graphics g) {
     
     
    		int width = getWidth();
    		int height = getHeight();
    		int largeur = width / grille.getAbcisseMax();
    		int hauteur = height / grilleJeu.getOrdonneeMax();
     
     
    		for (int i = 0; i < grille.getAbcisseMax(); i++) {
    			for (int j = 0; j < grille.getOrdonneeMax(); j++) {
    				int x = j * largeur;
    				int y = i * hauteur;
     
    				g.drawImage(images.get(grilleJeu[j][i]), x,
    						y, largeur, hauteur, this);
     
     
    			}
    		}
    J'ai une classe à part donc ma fenetre JFrame ou s'affiche les infos quand je clique sur une case que j'insére dans mon main quand je clique sur une case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public Info(CaseTerrain caseTerrain) {
    		this.caseTerrain = caseTerrain;
    		//this.etatDePartie = etatDePartie;
    		initLayout(caseTerrain);
    		initStyle();
    		initAction(caseTerrain);
    	}

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Sa c'est ce que j'ai au départ maintenant j'ai crée une classe JPanel de cette facon la qui prends les JLabel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public PanelDroit(CaseTerrain caseTerrain){
    que j'insére comme cela dans une autre JFrame avec la grille:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     JComponent central = new Main(); // le main
        	JComponent right = new PanelDroit(new CaseTerrain());

  5. #5
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Alors je résume :

    _tu ouvre ta JFrame;
    _tu charge ta grille dans un JComponent (un JPanel?).
    _tu charge un JPanel à droite pour pouvoir afficher une case de grille.

    Ce que je peux te conseiller avec ce que tu me donne c'est :

    _de regarder du coté de JSplitPane pour gérer tes deux panneaux (si tu n'en a que deux qui restent en permanence). Tu te facilitera la vie je pense si tu l'utilise comme contentPane de ta JFrame.
    _de garder un constructeur vide à ton PanelDroit et d'utiliser get et set sur ta case de terrain, ça t'évitera d'instancier un nouveau panel à chaque clic sur une case.

    Si ce que tu veux afficher c'est des String, effectivement générer des JLabel pour chaque info est ce qu'il y a de plus pratique.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Oui j'ouvre ma JFrame dedans la un JComponent central qui est la grille un droite un panel avec des JLabel vide que je remplace avec un set text ou je récupère les données seulement sa me met des NPE sur ses données ..
    Tu peux me montrer un exemple s il te plait?

  7. #7
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Je préférerai que tu me poste entièrement les classes impliqués (ta JFrame qui contient tout, ton Main qui contient la grille, ta classe CaseTerrain et ta classe PanelDroit) pour que je vois comment tu as articulé le tout et trouver pourquoi il y a un NPE. Ce sera plus rapide que de tout recoder de mon côté

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Mon panel droit
    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
     
    public class PanelDroit extends JPanel {
    	private JLabel info = new JLabel("Information joueur 1:");
        private JLabel info1 = new JLabel("Information joueur 2:");
        private JLabel infoGrilleX = new JLabel("");
        private JLabel infoGrilleY = new JLabel("");
        private JLabel typeTerrainLabel = new JLabel("");
    	private JLabel proprietaireLabel = new JLabel("");
    	private JLabel uniteeLabel = new JLabel("");
     
    	public PanelDroit(CaseTerrain caseTerrain){
    		CoordonneesTerrain coordonneesTerrain = caseTerrain
    				.getCoordonneesTerrain();
    		TerrainJeu terrainJeu = caseTerrain.getTerrain();
    		this.setLayout(new BorderLayout());
    		this.add(info);
    		this.add(info1);   			 
    		this.add(infoGrilleX);
    		this.add(infoGrilleY);
    		this.add(typeTerrainLabel);
    		this.add(proprietaireLabel);
    		this.add(uniteeLabel);
     
    		infoGrilleX.setText("X = " + coordonneesTerrain.getX());
    		infoGrilleY.setText("Y = " + coordonneesTerrain.getY());
    		proprietaireLabel.setText("propriétaire : "
    				+ terrainJeu.getProprietaire().getNomJoueur());
    		typeTerrainLabel.setText(""
    				+ terrainJeu.getTypeTerrain().getIdentifiant());
     
    		uniteeLabel.setText("nombre d'unitées :"+terrainJeu.getArmeeProprietaire().getUnitees().get(TypeUnitee.SOLDAT));
    	}
    }
    Ma JFrame :
    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
     
    public class Fenetre extends JFrame
    {
        private static final long serialVersionUID = 1L;
     
        public Fenetre(){
     
     
        	JComponent central = new Main(); // le main
        	JComponent right = new PanelDroit(new CaseTerrain());
        			this.getContentPane().setLayout(new BorderLayout());
        			this.getContentPane().add(central,BorderLayout.CENTER);
        			this.getContentPane().add(right,BorderLayout.EAST);
     
        			//info.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        			right.setLayout(new BoxLayout(right,BoxLayout.Y_AXIS));
     
        }
        public static void main(String[]args){
     
        	Fenetre fen = new Fenetre();
        	fen.setSize(500, 500);
        	fen.setVisible(true);
        }
    }
    CaseTerrain
    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
     
     
     
     
     
     
    public class CaseTerrain {
    	private TerrainJeu terrain;
    	private CoordonneesTerrain coordonneesTerrain;
     
    	public CaseTerrain(){
     
    	}
     
    	public CaseTerrain(int x , int y){
    		this( new TerrainJeu(TypesTerrains.NON_DEFINIE), x ,y);
     
     
    	}
     
    	public CaseTerrain(TerrainJeu terrain , int x , int y){
    		this(terrain ,new CoordonneesTerrain(x, y));	
    	}
     
    	public CaseTerrain(TerrainJeu terrain,CoordonneesTerrain coordonneesTerrain){
    		this.coordonneesTerrain = coordonneesTerrain;
    		this.terrain = terrain;
    	}
     
    	public TerrainJeu getTerrain() {
    		return terrain;
    	}
     
    	public CoordonneesTerrain getCoordonneesTerrain() {
    		return coordonneesTerrain;
    	}
     
    	public void setTerrain(TerrainJeu terrain) {
    		this.terrain = terrain;
    	}
     
    	@Override
    	public String toString() {
    		return "CaseTerrain [terrain=" + terrain + ", coordonneesTerrain="
    				+ coordonneesTerrain + "]";
    	}
     
     
     
     
     
    }
    Mon main:
    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
     
     
    public class Main extends JPanel  {
    	private static CaseTerrain[] caseTerrains = new CaseTerrain[2]
    	private GrilleJeu grilleJeu;
     
     
    	public Main() {
     
     
    		initLayout();
     
    	}
     
     
    	private void initLayout() {
    		CreationGrille grille = new CreationGrille(grilleJeu, joueurs,etatDePartie);
    		this.setLayout(new BorderLayout());
    		this.add(grille);
     
     
     
    	}
     
    }
    Je t'ai pas tous mis dans le main puisque y a des choses qui ne font pas te dervir a grand chose et y a tellement de classe ...

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut
    Je te remets tout puisque j'ai fais quelques modifications mais le soucis est toujours là :

    CaseTerrain
    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
     
    public class CaseTerrain {
    	private TerrainJeu terrain;
    	private CoordonneesTerrain coordonneesTerrain;
     
    	public CaseTerrain(){
     
    	}
     
    	public CaseTerrain(int x , int y){
    		this( new TerrainJeu(TypesTerrains.NON_DEFINIE), x ,y);
     
     
    	}
     
    	public CaseTerrain(TerrainJeu terrain , int x , int y){
    		this(terrain ,new CoordonneesTerrain(x, y));	
    	}
     
    	public CaseTerrain(TerrainJeu terrain,CoordonneesTerrain coordonneesTerrain){
    		this.coordonneesTerrain = coordonneesTerrain;
    		this.terrain = terrain;
    	}
     
    	public TerrainJeu getTerrain() {
    		return terrain;
    	}
     
    	public CoordonneesTerrain getCoordonneesTerrain() {
    		return coordonneesTerrain;
    	}
     
    	public void setTerrain(TerrainJeu terrain) {
    		this.terrain = terrain;
    	}
     
    	@Override
    	public String toString() {
    		return "CaseTerrain [terrain=" + terrain + ", coordonneesTerrain="
    				+ coordonneesTerrain + "]";
    	}
     
     
     
     
     
    }
    Main
    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
     
    public Main(int x,int y,int taux) {//prend en paramètre les dimensions de la grille et le taux
    		X = x;
    		Y=y;
    		TAUX=taux;
     
    		initData(x, y, taux);
    		initLayout(x,y,taux);
     
     
     
    	}
     
     
    	private void initData(int x,int y,int taux) {
    		GenerateurCarte generateurCarte = new GenerateurCarte();
     
    		try {
    			grilleJeu = generateurCarte.genererCarte(x, y, taux, joueurs);
    		} catch (WaterWoldExeption e) {
    			e.printStackTrace();
     
    		}
    	}
     
    	private void initLayout(int x,int y, int taux) {
    		CreationGrille grille = new CreationGrille(grilleJeu, joueurs,etatDePartie);
     
    		this.setLayout(new BorderLayout());
    		this.add(grille);
    Fenetre
    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
     
    public Fenetre(int x,int y,int taux){//de meme
    		/*CoordonneesTerrain coordonneesTerrain = caseTerrain
    				.getCoordonneesTerrain();
    		TerrainJeu terrainJeu = caseTerrain.getTerrain();*/
    		this.setSize(400,400);
    	JComponent central = new ConqueteMain(x, y,taux ); // le main
    	JPanel right = new JPanel();
    	this.getContentPane().setLayout(new BorderLayout());
    	this.getContentPane().add(central,BorderLayout.CENTER);
    	this.getContentPane().add(right,BorderLayout.EAST);
     
    	right.setLayout(new BoxLayout(right,BoxLayout.Y_AXIS));
    	right.add(info);
    	info.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
    	right.add(info1);
    	right.add(new JSeparator(SwingConstants.HORIZONTAL));
    	right.add(infoGrilleX);
    	right.add(infoGrilleY);
    	right.add(typeTerrainLabel);
    	right.add(proprietaireLabel);
    	right.add(uniteeLabel);
     
    	this.setJMenuBar(this.creationJmenu());
     
     
    	/*infoGrilleX.setText("X = " + coordonneesTerrain.getX());//c'est cette partie la qui bug
    	infoGrilleY.setText("Y = " + coordonneesTerrain.getY());
    	proprietaireLabel.setText("propriétaire : "
    			+ terrainJeu.getProprietaire().getNomJoueur());
    	typeTerrainLabel.setText(""
    			+ terrainJeu.getTypeTerrain().getIdentifiant());
     
    	uniteeLabel.setText("nombre d'unitées :"+terrainJeu.getArmeeProprietaire().getUnitees().get(TypeUnitee.SOLDAT));
    	*/}
    J'ai pas mis la caseTerrain en paramètre puisque sa ne marche pas... alors mon soucis c'est que quand je clique sur une case j'aimerais que les info de la case s'affiche dans le panel à droite(right) donc modifier le texte .
    Merci de votre aide.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  2. problème d'insertion de données
    Par Falgan dans le forum ASP
    Réponses: 2
    Dernier message: 06/04/2004, 09h29
  3. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  4. insertion de données
    Par m-l dans le forum SQL
    Réponses: 9
    Dernier message: 25/07/2003, 13h59
  5. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33

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