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

Collection et Stream Java Discussion :

affichage d'un arrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut affichage d'un arrayList
    Bonjour,

    j'essai de surcharger une méthode toString() pour l'affichage d'un arrayList composé de JLabel, et je n'y arrive pas...
    voici mon code :
    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
     
    public class ecr_batonnage {
     
    	private JFrame fen = new JFrame();
    	private JPanel panRes = new JPanel();
    	ArrayList<JLabel> listLabel = new ArrayList<JLabel>();
     
     
    	public ecr_batonnage() throws SQLException
    	{
    		//String[] uneOffre = {"mens","suivi_conso"};
    		Connection con = null;
    	    ResultSet resultats = null;
     
    	     Vector realData = new Vector ();
    	     con = DriverManager.getConnection("jdbc:mysql://localhost/batonnage?zeroDateTimeBehavior=convertToNull","root","");
    	     Statement st = con.createStatement();
    	     resultats = st.executeQuery("SELECT libelle_offre from offres where code_canal like '%"+ecran.uneActivite.getCode()+"%'");
    	     resultats.last();
    	     int nblignes = resultats.getRow();
    	     resultats.beforeFirst();
    	     while(resultats.next())
    	     {
    	    	String data = new String(resultats.getString("libelle_offre"));
    	    	realData.add(data);
     
    	     }
     
     
    		JList liste_offre = new JList(realData);
     
    		for(int i=0;i<nblignes;i++){
    		     listLabel.add(new JLabel("0"));
    		}
     
    		fen.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER,10,5));
    		fen.getContentPane().add(liste_offre);
     
    		System.out.print(listLabel.get(0));
     
    		fen.add(panRes);
    		fen.setSize(300, 200);
    		fen.setVisible(true);
    	}
     
     
    	public String toString() { 
    		for (int i =0;i<listLabel.size();i++)
    		{
    			return    listLabel.get(i).getText();        
    		}
    		return null;
     
    		}
    	}
    rien ne s'affiche dans ma fenêtre...j'ai sans doute oublié quelque chose

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Voici une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public String toString() { 
    	StringBuilder builder = new StringBuilder(1024);
    	builder.builder.append('[');
     
    	for (int i = 0; i < listLabel.size(); i++)
    	{
    		if(i > 0) builder.append(", ");
    		builder.append(listLabel.get(i).getText());
    	}
    	builder.builder.append(']');
    	return builder.toString();
    }
    La méthode toString() et une méthode "standardisée" qui se rapporte à ton objet ecr_batonnage, ce n'est pas une bonne idée de l'utiliser pour afficher juste tes JLabel.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    ok.

    et pour qu'ils s'affichent l'un sous l'autre et non l'un à côté de l'autre, il y a un moyen?

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Je ne comprends pas, tu écris des lignes et des lignes de code pour gérer ton affichage et tu n'arrives pas à modifier une simple concaténation de textes ???
    Comprends-tu le code que je t'ai envoyé ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Oui,j'ai compris et se que tu fait me renvoi du texte. Je souhaite afficher mes JLabel les uns en dessous des autres car ils correspondent en faite à un système de comptage.

    En faite, j'ai une JList qui contient des services que je vends et pour chaque élément de ma Jlist j'ai un JLabel qui compte le nombre de fois que j'ai vendu le service qui est placé en face dans ma JList.

    Peut-être que se que je souhaite faire n'est pas possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<nblignes;i++){
     
    		     panRes.add(listLabel.get(i));
     
    		}
    voilà ce que je fais pour afficher mes différents JLabels mais ils s'affichent à la suite

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Oui,j'ai compris et se que tu fait me renvoi du texte.
    C'était ta question, non ?
    j'essai de surcharger une méthode toString() ...

    En faite, j'ai une JList qui contient des services que je vends et pour chaque élément de ma Jlist j'ai un JLabel qui compte le nombre de fois que j'ai vendu le service qui est placé en face dans ma JList.
    Là on est sur un autre problème, et j'ai peur de comprendre que tu cherches à aligner des JLabel sur des éléments de JList .
    Si c'est bien ça, à mon avis ce n'est vraiment pas une bonne idée. Utilise une JTable pour placer le tout ça sera plus simple.
    Tu as ici un tutoriel qui t'explique comment utiliser une JTable.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    oui, désolé je débute je me mélange un peu les pinceaux

    c'est bien se que je souhaite faire...je regarde les JTable et je te redis.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Est- ce que je peux avec la Jtable remplir la première colonne à partir d'une BDD et les deux autres leur affecter la valeur "0" que je dois incrémenter de un à chaque vente de service?

  9. #9
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Prends le temps de comprendre comment fonctionne les JTable et tu verras que ce que tu demandes est possible.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Pour ce qui est des JTable j'en suis 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
    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
     
    public class ModeleDynamiqueObjet extends AbstractTableModel{
    	private final ArrayList Loffres = new ArrayList();
     
    	private final String[] entetes = {"Offres","Objectifs","Résultats"};
    	public ModeleDynamiqueObjet()
    	{
    		super();
    		Connection con = null;
    	    ResultSet resultats = null;
     
     
            	 //placer les valeurs dans Vector ligne
            	try {
            		con = DriverManager.getConnection("jdbc:mysql://localhost/batonnage?zeroDateTimeBehavior=convertToNull","root","");
            		Statement st = con.createStatement();
            		resultats = st.executeQuery("SELECT libelle_offre from offres where code_canal like '%"+ecran.uneActivite.getCode()+"%'");
           	     	ResultSetMetaData metadata = (ResultSetMetaData) resultats.getMetaData();
           	     	int nbColonnes = metadata.getColumnCount();
                    while(resultats.next()) {
    				Loffres.add(resultats.getString("libelle_offre"));}
    				}
            	catch (SQLException e) 
            	{
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
        }
     
    	@Override
    	public int getColumnCount() {
    		// TODO Auto-generated method stub
    		return entetes.length;
    	}
     
    	@Override
    	public int getRowCount() {
    		// TODO Auto-generated method stub
    		return Loffres.size();
    	}
     
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		// TODO Auto-generated method stub
    		switch(columnIndex){
    		case 0 :
    			return Loffres.get(rowIndex);
    		case 1 :
    			return Loffres.get(rowIndex);
    		case 2 :
    			return Loffres.get(rowIndex);
    		default :
    		return null;
    		}
    	}
     
    }
    mais mes colonnes ne prennent pas les noms que je fixe dans "entetes".Je voudrais que la première colonne prenait une partie de la requete la deuxième une autre partie et que la troisième je la remplisse manuellement avec des "0". Seulement la ça me le fait dans l'autre sens

    Et la ben je vois pas comment faire

  11. #11
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    mais mes colonnes ne prennent pas les noms que je fixe dans "entetes"
    où surcharges-tu "getColumnName(int columnIndex)" ?

    Je voudrais que la première colonne prenait une partie de la requete la deuxième une autre partie
    Concrètement ?
    Par ce que ta sélection (SELECT libelle_offre from ...) ne retourne qu'une seule colonne ?

    la troisième je la remplisse manuellement avec des "0". Seulement la ça me le fait dans l'autre sens
    Pour l'instant toutes tes lignes affichent trois fois la même valeur, non ? (voir ta méthode getValueAt)

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Voici ma classe après quelqued modifs

    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
     
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
     
     
    import javax.swing.table.AbstractTableModel;
     
    import com.mysql.jdbc.ResultSetMetaData;
     
     
    public class ModeleDynamiqueObjet extends AbstractTableModel{
    	private final ArrayList Loffres = new ArrayList();
     
    	private final String[] entetes = {"Offres","Objectifs","Résultats"};
    	public ModeleDynamiqueObjet()
    	{
    		super();
    		Connection con = null;
    	    ResultSet resultats = null;
     
     
            	 //placer les valeurs dans Vector ligne
            	try {
            		con = DriverManager.getConnection("jdbc:mysql://localhost/batonnage?zeroDateTimeBehavior=convertToNull","root","");
            		Statement st = con.createStatement();
            		resultats = st.executeQuery("SELECT libelle_offre,obj from offres LEFT OUTER JOIN obectifs ON offres.code_offre = obectifs.code_offre WHERE code_canal like '%"+ecran.uneActivite.getCode()+"%'");
           	     	ResultSetMetaData metadata = (ResultSetMetaData) resultats.getMetaData();
           	     	int nbColonnes = metadata.getColumnCount();
                    while(resultats.next()) {
    				Loffres.add(resultats.getString("libelle_offre"));
    				Loffres.add(resultats.getString("obj"));
    				Loffres.add("0");}
    				}
            	catch (SQLException e) 
            	{
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
        }
     
    	@Override
    	public int getColumnCount() {
    		// TODO Auto-generated method stub
    		return entetes.length;
    	}
     
    	@Override
    	public int getRowCount() {
    		// TODO Auto-generated method stub
    		return Loffres.size();
    	}
    	public String getColumnName(int columnIndex) {
    		// TODO Auto-generated method stub
    		switch(columnIndex){
    		case 0 :
    			return "Offres";
    		case 1 :
    			return "Objectifs";
    		case 2 :
    			return "Résultats";
    		default :
    		return null;
    		}
    	}
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		// TODO Auto-generated method stub
    		switch(columnIndex){
    		case 0 :
    			return Loffres.get(rowIndex);
    		case 1 :
    			return Loffres.get(rowIndex);
    		case 2 :
    			return Loffres.get(rowIndex);
    		default :
    		return null;
    		}
    	}
     
    }
    cela m'affiche un tabeau mais qui n'est pas dans "le bon sens"....
    il m'affiche à la première ligne mon premier service 3 fois puisque j'ai 3 colonnes.
    Puis mon objectif
    Puis 0
    Je voudrais que cela s'affiche en colonnes en faite je sais pas si c'est clair se que je dis...

    Merci de ton aide en tout cas

  13. #13
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Ne mélange pas tes données, structure la façon de les ranger, tu t'y perdras moins.
    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
    public ModeleDynamiqueObjet() {
    	...
    	String[] rowTmp;
    	while(resultats.next()) {
    		rowTmp = new String[3];
    		rowTmp[0] = resultats.getString("libelle_offre");
    		rowTmp[1] = resultats.getString("obj");
    		rowTmp[2] = "0";
    		Loffres.add(rowTmp)
    	}
    	...
    }
     
    ...
     
    public Object getValueAt(int rowIndex, int columnIndex) {
    	String[] rowTmp = Loffres.get(rowIndex);
    	return rowTmp[columnIndex];
    }

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Je suis un peu embêtée, est-il possible d'afficher un JTable en utilisant GridBagLayout? Le tableau s'affiche mais pas les entetes....

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Je me suis débrouillée autrement mais merci beaucoup de ton aide ^^...

  16. #16
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Il faut jute placer la table une un JScrollPane pour afficher les entêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JTable table = new JTable(new ModeleDynamiqueObjet());
    frame.getContentPane().add(new JScrollPane(table), ...);

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    Oui c'est se que j'ai fait merci.
    J'ai aussi 3 boutons que j'ai ajouter sous le JTable mais j'arrive pas à les faire fonctionner...

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    C'est bon tout marche merci beaucoup!!!

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Par défaut
    et ben non tout marche pas...
    j'arrive pas a récupérer la ligne sélectionnée dans ma JTable...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     int num_col = tableau.getSelectedColumn();
    System.out.println(num_col);
    int num_ligne = tableau.getSelectedRow();
    ecran.lib_of_selec = (String) tableau.getValueAt(num_ligne+1, num_col+1);
    mais mon getSelectedRow me donne toujours la première ligne même si je sélectionne la deuxième

    même chose pour getSelectedColumn


  20. #20
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pour sélectionner une seule ligne à la fois, place ça juste après la création de ta table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème d'affichage d'une ArrayList dans une JSP
    Par Chayton dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/03/2015, 01h31
  2. [DisplayTag] affichage d'une arrayList
    Par tuxmona dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/12/2008, 17h42
  3. [VB.NET][ComboBox] Pb Affichage d'après ArrayList
    Par mainecoon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/11/2006, 08h49
  4. Affichage d'une ArrayList avec logic:iterate
    Par mitje dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/09/2006, 10h02
  5. [VB.NET] [WinForms] [DataGrid][ArrayList] Affichage colonnes
    Par Misterburma dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/04/2005, 11h45

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