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

Composants Java Discussion :

Souci d'affichage sur un renderer de JTable


Sujet :

Composants Java

  1. #1
    Invité
    Invité(e)
    Par défaut Souci d'affichage sur un renderer de JTable
    Bonjour à tous je suis développeur java et j'ai un petit souci d'affichage, c'est pour un tp d'informatique :
    pour ceux qui ont la foi voici le code complet en github : https://github.com/blackAllSun/JeuxDeCourseAutoJava
    je voudrais désérialiser un fichier json avec gson puis l'afficher avec un JTable, en console pas d'erreur les bons id renvoient aux bon objet mais l'affichage de JTable n'affiche que le 1er élément!
    le code du renderer :
    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
     
    package jeuxDeVoitureAuto.ihm.renderer;
     
    import java.awt.Component;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.util.Collections;
    import java.util.List;
     
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
    import com.google.gson.Gson;
    import com.google.gson.stream.JsonReader;
     
    import jeuxDeVoitureAuto.RootGson;
    import jeuxDeVoitureAuto.pojo.Adresse;
    import jeuxDeVoitureAuto.pojo.Contrat;
    import jeuxDeVoitureAuto.pojo.Sponsor;
     
    public class TableLabelRendererAdresse extends DefaultTableCellRenderer {
    	String jsonString="/home/blackallsun/workspace/TPDiversJavaSE/src/jeuxDeVoitureAuto/listeVoiture.json";
    	File fileToInternalStorage = new File(jsonString);
    	Gson gson = new Gson();
    	JsonReader reader=new JsonReader(new InputStreamReader(new FileInputStream(fileToInternalStorage), "UTF-8"));
    	RootGson root = gson.fromJson(reader, RootGson.class); 
    	List<Sponsor> listSponsor=root.getSponsor();
    	List<Adresse> listAdresse=root.getAdresse();
     
    	String ville;
    	String pays;
    	String strText;
    	public TableLabelRendererAdresse() throws FileNotFoundException, UnsupportedEncodingException{}
    	public Component getTableCellRendererComponent(JTable table, Object value,
    		                                                 boolean isSelected, boolean hasFocus, 
    		                                                 int row, int column) {
    		super.getTableCellRendererComponent(table, value, isSelected, hasFocus,	row, column);
    		for(int iSponsor=0;iSponsor<listSponsor.size();iSponsor++){
    			int idAdresse=listSponsor.get(iSponsor).getIdAdresse();
    			System.out.println("id adresse : "+ idAdresse +" de id sponsor"+iSponsor);
    			searchAdresse(idAdresse);
    			ville=listAdresse.get(idAdresse).getVille();
    			pays=listAdresse.get(idAdresse).getPays();
    			value=new Adresse(idAdresse,ville,pays);
    			strText="<html><head></head><body>";
    			strText+= "<label>Id : "+((Adresse) value).getIdAdresse()+"</label><br>";
    			strText+="<label>Ville : "+((Adresse) value).getVille()+"</label><br>";
    			strText+="<label>France : "+((Adresse) value).getPays()+"</label><br>";
    			strText+="</body><html>";
    			setText(strText);}
    		    return this;}
    	public void searchAdresse(int indexAdresse){
    		System.out.println("**** Adresse :      ****");
    		 Collections.sort(listAdresse);
     
    			 System.out.println("id : "+listAdresse.get(indexAdresse).getIdAdresse());
    			 System.out.println("Ville : "+listAdresse.get(indexAdresse).getVille());
    			 System.out.println("Pays : "+listAdresse.get(indexAdresse).getPays());
     
    	}	
     
    }
    le code console :
    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
     
     
    id : 0
    Ville : Changai
    Pays : Chine
    id adresse : 2 de id sponsor2
    **** Adresse :      ****
    id : 2
    Ville : Londres
    Pays : Angleterre
    id adresse : 3 de id sponsor3
    **** Adresse :      ****
    id : 3
    Ville : Rome
    Pays : Italie
    id adresse : 1 de id sponsor0
    **** Adresse :      ****
    id : 1
    Ville : Berlin
    Pays : Allemagne
    id adresse : 0 de id sponsor1
    **** Adresse :      ****
    id : 0
    Ville : Changai
    Pays : Chine
    id adresse : 2 de id sponsor2
    **** Adresse :      ****
    id : 2
    Ville : Londres
    Pays : Angleterre
    id adresse : 3 de id sponsor3
    **** Adresse :      ****
    id : 3
    Ville : Rome
    Pays : Italie
    id adresse : 1 de id sponsor0[ATTACH=CONFIG]303165[/ATTACH]
    merci de me lire et si vous une idée comment y remédier je vous en serais très reconnaissante . Viviane

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un TableCellRenderer sert à faire le rendu (autrement dit, le dessin ou l'affichage) d'une cellule (cell=cellule renderer=machin qui fait du rendu). Cela ne sert pas à faire l'affichage de l'ensemble de tes données. Les données tu les insers dans le modèle de la JTable, et, éventuellement, si tu as un rendu spécial à faire, tu fais un TableCellRenderer spécial (pour des chaînes de caractères, sans style particulier, c'est totalement inutile, car la JTable a déjà un TableCellRenderer par défaut qui affiche très bien les chaînes).

    Par exemple, le code suivant (j'ai remplacé le renderer standard de la seconde colonne pour qu'il affiche une barre d'histogramme au lieu du nombre) :
    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
     
    public class DemoJTable {
     
    	public static void main(String[] args) {
     
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		String[] columns = {"nom","valeur"};
    		Object[][] data = {
    				{"Paul", 15},
    				{"Virginie", 28},
    				{"Marc", 9},
    				{"Caroline", 36},
    		};
    		JTable table = new JTable(data, columns);
     
    		table.getColumnModel().getColumn(1).setCellRenderer(new HistoTableCellRenderer());
     
    		JPanel panel = new JPanel(new BorderLayout());
    		panel.add(table);
    		panel.add(table.getTableHeader(),BorderLayout.NORTH);
     
    		frame.add(panel);
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	public static class HistoTableCellRenderer extends DefaultTableCellRenderer {
     
    		private int value;
     
    		@Override
    		protected void paintComponent(Graphics g) {
    			super.paintComponent(g);
    			double width = getWidth()*value/100d;
    			g.setColor(Color.RED);
    			g.fillRect(0, 0, (int)width, getHeight());
    		}
     
    		@Override
    		protected void setValue(Object value) {
    			if ( value instanceof Integer ) {
    				this.value=(int)value;
    			}
    			else {
    				super.setValue(null);
    			}
    		}
     
    	}
     
     
    }
    affiche :

    Nom : Capture.JPG
Affichages : 225
Taille : 12,4 Ko

    Tu peux voir que, dans le renderer, on ne gère qu'une seule valeur à la fois, la table s'occupant de chaque ligne ensuite.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut et merci pour la réponse : bon p'tete que j'ai pas été assez clair ! en json si je ne mets pas en place 1 système de clé secondaire et de clé primaire ça va devenir rapidement ingérable ... du genre obligé de recopier les mêmes objets à différents endroits !
    le JTable tout seul il affiche déjà les bonnes clés secondaires sans le renderer ! moi ce que je voudrais ce qu'il affiche les bonnes données correspondant aux bonnes clés ! chose qu'il fait déjà en console soit dit en passant ! l'objet de ce tp est tout simple : voir si je peux dans certains cas me passer d'une SGBD en MySQL et passer les données en JSON

    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
     
    {
    "name":"données jeux",
     
    "tabVoiture":[ 
    	{"idVoiture":"0","modele":"Audi TT","puissance":"12000","prix":"14500","vitesseMax":"220"},
    	{"idVoiture":"1","modele":"Austin Martin","puissance":"11200","prix":"22000","vitesseMax":"280"},
    	{"idVoiture":"2","modele":"Fiat 500","puissance":"7000","prix":"8000","vitesseMax":"170"},
    	{"idVoiture":"3","modele":"4Ailes","puissance":"12000","prix":"14500","vitesseMax":"122"},
    	{"idVoiture":"4","modele":"lamborgini","puissance":"32000","prix":"82000","vitesseMax":"450"},
    	{"idVoiture":"5","modele":"ferrari","puissance":"31000","prix":"93000","vitesseMax":"480"},
    	{"idVoiture":"6","modele":"Ford berline","puissance":"28000","prix":"32000","vitesseMax":"310"}
    ],
    "tabPilote":[
    	{"idPilote":"0","nom":"Le Roi des Huns","prenom":"Attila","age":"42","statut":"PILOTE","idVoiture":"0"},
    	{"idPilote":"1","nom":"Le Conquerant","prenom":"Guillaume","age":"21","statut":"PILOTE","idVoiture":"1"},
    	{"idPilote":"2","nom":"Maison Tudor","prenom":"Henri VIII","age":"32","statut":"COPILOTE","idVoiture":"0"},
    	{"idPilote":"3","nom":"Boleyn","prenom":"Anne ","age":"28","statut":"COPILOTE","idVoiture":"1"},
    	{"idPilote":"4","nom":"de Lombardie","prenom":"Désirée","age":"14","statut":"PILOTE","idVoiture":"2"},
    	{"idPilote":"5","nom":"Le Bref","prenom":"Pépin ","age":"64","statut":"PILOTE","idVoiture":"3"},
    	{"idPilote":"6","nom":"Bonaparte","prenom":"Napoléon","age":"40","statut":"COPILOTE","idVoiture":"2"},
    	{"idPilote":"7","nom":"Hugo","prenom":"Victor","age":"44","statut":"COPILOTE","idVoiture":"3"}
    ],
    "tabSponsor":[
    	{"idSponsor":"0","nom":"Simon Pierre","budget":"12000","idAdresse":"1"},
    	{"idSponsor":"1","nom":"Giovanni Battista Montini","budget":"14000","idAdresse":"0"},
    	{"idSponsor":"2","nom":" Saint Denis","budget":"24000","idAdresse":"2"},
    	{"idSponsor":"3","nom":"Marie Madelaine","budget":"47000","idAdresse":"3"}
    	],
    "tabAdresse":[
    	{"idAdresse":"0","ville":"Changai","pays":"Chine"},
    	{"idAdresse":"1","ville":"Berlin","pays":"Allemagne"},
    	{"idAdresse":"2","ville":"Londres","pays":"Angleterre"},
    	{"idAdresse":"3","ville":"Rome","pays":"Italie"},
    	{"idAdresse":"4","ville":"Paris","pays":"France"},
    	{"idAdresse":"5","ville":"Tokyo","pays":"Japon"},
    	{"idAdresse":"6","ville":"Marseille","pays":"France"},
    	{"idAdresse":"5","ville":"Madrid","pays":"Espagne"}
    ],
    "tabEcurie":[
    	{"idEcurie":"0","nom":"Formula1","idAdresse":"3","budget":"145000"},
    	{"idEcurie":"1","nom":"Castagnette","idAdresse":"4","budget":"10000"},
    	{"idEcurie":"2","nom":"LaSuperLente","idAdresse":"5","budget":"120000"},
    	{"idEcurie":"3","nom":"LesChauffards","idAdresse":"6","budget":"17255"},
    	{"idEcurie":"4","nom":"FumeLeVents","idAdresse":"7","budget":"290000"}
    ],
    "tabContrat":[
    	{"idContrat":"0","saison":"AUTOMNE","idEcurie":"0","idPilote":"0","idCoPilote":"1","idSponsor":"0","idVoiture":"0"},
    	{"idContrat":"1","saison":"ETE","idEcurie":"1","idPilote":"2","idCoPilote":"3","idSponsor":"1","idVoiture":"1"},
    	{"idContrat":"2","saison":"HIVER","idEcurie":"2","idPilote":"4","idCoPilote":"5","idSponsor":"2","idVoiture":"3"},
    	{"idContrat":"3","saison":"PRINTEMPS","idEcurie":"3","idPilote":"6","idCoPilote":"7","idSponsor":"3","idVoiture":"4"}
    ]
    }
    Nom : Capture d’écran_2017-08-18_16-48-31.png
Affichages : 288
Taille : 195,2 Ko

    bref les données et le jtable sont bons ! c'est juste le renderer qui affiche pas la meme données pour chaque cellule ! pour l'instant pour toutes les cellules c'est la donnée correspondant à la clé secondaire : idAdresse=3 de tabEcurie cad {"idAdresse":"3","ville":"Rome","pays":"Italie"} de tabAdresse

    je pense regler le probleme en modifiant mon model pour que ca soit lui qui cherche les bonnes données pour les clés correspondantes ! je trouve que ca va l'alourdir et en plus question reutilisation du code on repassera puisque je fais le meme affichage pour plusieurs tables de plusieurs colonnes

    merci encore de tenter de m'aider dans mon bug d'affichage . Viviane
    Dernière modification par Invité ; 18/08/2017 à 17h27.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Peu importe la structure de tes données, un renderer c'est fait pour faire du rendu. Et ça se déclenche dans le thread Swing (Event Dispatch Thread = EDT), qui existe, entre autres, pour faire le rendu. Faire des requêtes dans la partie rendu signifie introduire des procédures lentes dans le thread Swing, donc introduire des latences et des gels de ton UI (aussi bien pour le rendu, que pour l'interaction, puisque c'est l'autre objet de l'EDT).

    Dans tous les cas, il te faudra simplement préparer tes données dans ton modèle et laisser au renderer juste la tâche de rendu. Donc, il te faut simplement parcourir tes données pour remplir ton modèle, et remplacer les "clefs" par l'objet correspondant.

    Ce que tu peux faire c'est modéliser tes objets par des classes, et ensuite faire des renderers pour ces classes.

    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
    public class DemoJTable {
     
    	public static void main(String[] args) {
     
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		String[] columns = {"nom","valeur"};
    		String[] vehic = {
    				"Moto",
    				"Voiture"
    		};
    		Icon[] colors = Arrays.asList(
    				Color.RED,
    				Color.ORANGE,
    				Color.PINK,
    				Color.GREEN).stream().map(DemoJTable::toIcon).toArray(Icon[]::new); 
     
    		Object[][] dataorg = {
    				{"Paul", 1, 0},
    				{"Virginie", 0, 1},
    				{"Marc", 0, 2},
    				{"Caroline", 1, 3},
    		};
     
    		Object[][] data = new Object[dataorg.length][2];
    		for(int i=0; i<dataorg.length; i++) {
    			Object[] row = {dataorg[i][0], new Vehic(vehic[(int)dataorg[i][1]], colors[(int)dataorg[i][2]])};
    			data[i] = row;
    		}
     
    		JTable table = new JTable(data, columns);
     
    		table.getColumnModel().getColumn(1).setCellRenderer(new VehicTableCellRenderer());
     
    		JPanel panel = new JPanel(new BorderLayout());
    		panel.add(table);
    		panel.add(table.getTableHeader(),BorderLayout.NORTH);
     
    		frame.add(panel);
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	public static class Vehic {
     
    		private String type;
    		private Icon color;
     
    		public Vehic(String type, Icon color) {
    			this.type=type;
    			this.color=color;
    		}
     
    		public String getType() {
    			return type;
    		}
     
    		public Icon getColorIcon() {
    			return color;
    		}
     
    	}
     
    	public static class VehicTableCellRenderer extends DefaultTableCellRenderer {
     
    		@Override
    		protected void setValue(Object value) {
    			if ( value instanceof Vehic ) {
    				Vehic v = (Vehic) value;
    				setText(v.getType());
    				setIcon(v.getColorIcon());
    			}
    		}
     
     
    	}
     
     
    	public static Icon toIcon(Color color) {
     
    		BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB);
    		Graphics2D g = image.createGraphics();
    		g.setColor(color);
    		g.fillRect(0, 0, 15, 15);
    		g.setColor(Color.BLACK);
    		g.drawRect(0, 0, 15, 15);
    		g.dispose();
    		return new ImageIcon(image);
     
    	}
     
    }
    Avec comme rendu :
    Nom : Capture.PNG
Affichages : 229
Taille : 3,4 Ko


    Dans mon exemple, je rempli mon modèle à partir de tableaux, mais peu importe, que ça vienne de json, de base de données, etc, c'est le même principe.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Invité
    Invité(e)
    Par défaut
    mais je suis bien d'accord un render ne sert que pour le rendu ce que moi je vois ce que si je modifie mon model je vais devoir creer d'autre colonne pour afficher l'adresse sans passer par le render sauf que question visibilité on repassera .
    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
     
    package jeuxDeVoitureAuto.ihm.table;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.util.Collections;
    import java.util.List;
     
    import javax.swing.table.AbstractTableModel;
     
    import com.google.gson.Gson;
    import com.google.gson.stream.JsonReader;
     
    import jeuxDeVoitureAuto.RootGson;
    import jeuxDeVoitureAuto.pojo.Ecurie;
     
    public class TableModelEcurie extends AbstractTableModel{
    	String jsonString="/home/blackallsun/workspace/TPDiversJavaSE/src/jeuxDeVoitureAuto/listeVoiture.json";
    	File fileToInternalStorage = new File(jsonString);
    	Gson gson = new Gson();
    	JsonReader reader=new JsonReader(new InputStreamReader(new FileInputStream(fileToInternalStorage), "UTF-8"));
    	RootGson root = gson.fromJson(reader, RootGson.class); 
    	List<Ecurie> listEcurie=root.getEcurie();
    	String[] title={"ID","Nom","Id Adresse","Budget"};
    	public TableModelEcurie() throws FileNotFoundException, UnsupportedEncodingException{
    		Collections.sort(listEcurie);}
    	@Override
    	public int getColumnCount() {return title.length;}
     
    	@Override
    	public int getRowCount() {return listEcurie.size();}
     
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		switch(columnIndex){
    		case 0:return listEcurie.get(rowIndex).getIdEcurie();
    		case 1:return listEcurie.get(rowIndex).getNom();
    		case 2:return listEcurie.get(rowIndex).getIdAdresse();
    		case 3:return listEcurie.get(rowIndex).getBudget();
    		default:throw new IllegalArgumentException();}	
    	}
    	@Override
    	public Class<?> getColumnClass(int columnIndex) {
    		switch (columnIndex) {
     
    		case 0:return Integer.class;
    		case 1:
    			return String.class;
    		case 2:
    			return Integer.class;
    		case 3:
    			return Float.class;
     
    		default:
    			return Object.class;
    		}
    	}
    	@Override
    	public String getColumnName(int columnIndex) {
    		return title[columnIndex];
    	}	
     
    }
    j'ai bien pensé à faire un synchronized mais ou ?? utiliser une methode fireXXX() mais à quoi ca sert ya pas de bouton il est pas non plus editable ce ca le truc ! je doute que d'afficher la classe du panneau qui herite de JPanel serve à grand chose aussi ! changer la case 3 du switch() de la methode getValueAt() de getIdAdresse à getAdresse() ca a le m effet! bref mystere et boule de gomme ! je vois bien que j'ai foiré mon render mais ou ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    j'ai trouvé une autre soluc' la 4eme fut la bonne ! mais ce sure que quand on cherche on trouve ! pas besoin d'1 cours magistral ! je le connais mon taf merci encore de pas l'aide je passe en resolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		switch(columnIndex){
    		case 0:return listEcurie.get(rowIndex).getIdEcurie();
    		case 1:return listEcurie.get(rowIndex).getNom();
    		case 2: {
    			int idAdresse=listEcurie.get(rowIndex).getIdAdresse();
    			String ville=listAdresse.get(idAdresse).getVille();
    			String pays=listAdresse.get(idAdresse).getPays();
    			Adresse adresse=new Adresse(listEcurie.get(rowIndex).getIdAdresse(),ville,pays);return adresse;
    		}
    		case 3:return listEcurie.get(rowIndex).getBudget();
    		default:throw new IllegalArgumentException();}	
    	}
    Dernière modification par joel.drigo ; 21/08/2017 à 07h12. Motif: Ajout balise code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Soucis d'affichage sur un forum
    Par lejailleur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/03/2011, 15h01
  2. Probleme bizarre d affichage sur une radeon 9200 SE
    Par venomelektro dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/12/2004, 10h11
  3. Réponses: 2
    Dernier message: 09/10/2004, 11h35
  4. [Swings]Quelques soucis à l'affichage !
    Par julienOriano dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/09/2004, 13h22
  5. DBGrid - Affichage sur 2 colonnes
    Par Grouik dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/04/2004, 17h37

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