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. #21
    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
    Malgré ce que tu m'as conseillé, cela ne fonctionne pas. Lorsque je lui demande d'afficher le numéro de colonne sélectionné il me retour -1 tout le temps...Il doit falloir que je rafraichisse quelque chose peut-être au moment ou je sélectionne une autre ligne, mais je sais pas comment faire.Sur un évenement de la JTable?

    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
     
    	public ecr_batonnage() throws SQLException
    	{
    		//autoriser une seule sélection dans le tableau
    	    tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	    //récupérer la valeur sélectionnée  
    	    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);
     
    	     //mise en place ActionListener sur les trois boutons
    	     btnPlus.addActionListener(this);
    	     btnMoins.addActionListener(this);
    	     btnChAct.addActionListener(this);
     
    	    //gestion date pour récup numéro de semaine
    		String format = "dd/MM/yyyy"; 
    		java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat( format ); 
    		java.util.Date date = new java.util.Date(); 
    		System.out.println( formater.format( date ) ); 
     
     
    		//connexion et interrogation base MySQL
    		Connection con = null;
    	    ResultSet resultats = null;
     
    	     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();
     
              //ajout des controles dans les différents container puis dans la JFrame        
             contenu.add(new JScrollPane(tableau), BorderLayout.CENTER);
     
             panRes.add(btnPlus);
             panRes.add(btnMoins);
             panRes.add(btnChAct);
             contenu.add(panRes,BorderLayout.AFTER_LAST_LINE);
             fen.add(contenu);
     
             fen.setSize(500,300);
             fen.setVisible(true);
    		  	}

  2. #22
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    place ça juste après la création de ta table

    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
    	    tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    	    //récupérer la valeur sélectionnée  
    	    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);
     
    	     //mise en place ActionListener sur les trois boutons
    	     btnPlus.addActionListener(this);
    	     btnMoins.addActionListener(this);
    	     btnChAct.addActionListener(this);
    
    ...
    		//connexion et interrogation base MySQL
    		Connection con = null;
    	    ResultSet resultats = null;
    	     
    	     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();
    	      
              //ajout des controles dans les différents container puis dans la JFrame        
             contenu.add(new JScrollPane(tableau), BorderLayout.CENTER);
    Tu regardes la sélection d'un composant qui n'est même pas initialisé !!!

    Et fais attention, on ne construit pas sont interface graphique dans le constructeur d'un modèle. Ton modèle il doit gérer tes données et rien de plus donc dégage tout le reste.

  3. #23
    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
    euh chui un peu perdu là

    ça c'est mon modèle

    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
     
     
    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();
           	     	String[] rowTmp;
           	     	while(resultats.next()) {
           	     		rowTmp = new String[4];
           	     		rowTmp[0] = resultats.getString("libelle_offre");
           	     		rowTmp[1] = resultats.getString("obj");
           	     		rowTmp[2] = "0";
           	     		Loffres.add(rowTmp);
           	     	}
            	}
            	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 String getValueAt(int rowIndex, int columnIndex) {
    		// TODO Auto-generated method stub
    		String[] rowTmp = (String[]) Loffres.get(rowIndex);
    		return rowTmp[columnIndex];
     
     
    	}
     
    	//public boolean isCellEditable(int rowIndex, int columnIndex)
    	//{	if (columnIndex==2)
    	//{
    	//	return true;
    	//}
    	//	return false;
     
    	//}
     
     
    	public void setValueAt(int value, int row, int col) {
    		int [] rowTmp = (int[]) Loffres.get(row);
    		rowTmp[col] = Integer.parseInt((String) Loffres.set(row,value));
    		fireTableCellUpdated(row,col);
     
    	}
     
     
    }
    et ma classe ecr qui contient ma JTable

    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
     
    public class ecr_batonnage extends JFrame implements ActionListener
    {
    	private ModeleDynamiqueObjet modele = new ModeleDynamiqueObjet();
    	private JFrame fen = new JFrame();
    	private JPanel panRes = new JPanel();
    	ArrayList<JLabel> listLabel = new ArrayList<JLabel>();
    	private JButton btnPlus = new JButton("+");
    	private JButton btnMoins = new JButton("-");
    	private JButton btnChAct = new JButton("Changer d'activité");
    	private Container contenu = getContentPane();
    	private String libelle_offre_selec;
    	private JTable tableau =new JTable(modele);
     
     
    	public ecr_batonnage() throws SQLException
    	{
    		//autoriser une seule sélection dans le tableau
    	    tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
    	    //récupérer la valeur sélectionnée  
    	    int num_col = tableau.getSelectedColumn();
    	    System.out.println(num_col);
    		int num_ligne = tableau.getSelectedRow();
    		System.out.println(num_ligne);
    		ecran.lib_of_selec = (String) tableau.getValueAt(num_ligne+1, num_col+1);
     
    	     //mise en place ActionListener sur les trois boutons
    	     btnPlus.addActionListener(this);
    	     btnMoins.addActionListener(this);
    	     btnChAct.addActionListener(this);
     
    	    //gestion date pour récup numéro de semaine
    		String format = "dd/MM/yyyy"; 
    		java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat( format ); 
    		java.util.Date date = new java.util.Date(); 
    		System.out.println( formater.format( date ) ); 
     
     
    		//connexion et interrogation base MySQL
    		Connection con = null;
    	    ResultSet resultats = null;
     
    	     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();
     
              //ajout des controles dans les différents container puis dans la JFrame        
             contenu.add(new JScrollPane(tableau), BorderLayout.CENTER);
     
             panRes.add(btnPlus);
             panRes.add(btnMoins);
             panRes.add(btnChAct);
             contenu.add(panRes,BorderLayout.AFTER_LAST_LINE);
             fen.add(contenu);
     
             fen.setSize(500,300);
             fen.setVisible(true);
    		  	}
     
     
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    Object  source=e.getSource();
            String pdl = null;
            //si click sur le btnPlus
            if  (source==btnPlus)
            	{
            	//récup du PDL
            	pdl = JOptionPane.showInputDialog(fen, "Vous avez souscrit à l'offre "+ecran.lib_of_selec +", saisissez le PDL correspondant :","PDL",JOptionPane.QUESTION_MESSAGE);
            	//System.out.println(pdl);
     
            	//mise à jour du Résultat dans tableau
            	String nb_vente = (String) tableau.getValueAt(0,2);
            	System.out.println(nb_vente);
            	int new_nb = Integer.parseInt(nb_vente)+1;
            	System.out.println("erreur");
            	System.out.println(new_nb);
            	tableau.setValueAt(new_nb,0,2);
            	}
            //si click sur le btnMoins
            else if (source==btnMoins)
        	{
            	//récup du pdl
            	pdl = JOptionPane.showInputDialog(fen, "Vous avez sélectionné l'offre "+ecran.lib_of_selec +", supprimer le PDL correspondant :","PDL",JOptionPane.QUESTION_MESSAGE);
            	//System.out.println(pdl);
     
            	//mise à jour du Résultat dans tableau
            	String nb_vente = (String) tableau.getValueAt(tableau.getSelectedRow(),2);
            	int new_nb = Integer.parseInt(nb_vente)-1;
            	System.out.println("erreur");
            	System.out.println(new_nb);
            	tableau.setValueAt(new_nb,0, 2);
        	}
            //si click sur Changement d'activité
            else if (source==btnChAct)
            	{
            	//retour à l'ecran ecr_choix_act
            	fen.setVisible(false);
            try {
    			ecr_choix_act ecr = new ecr_choix_act();
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
           }
     
    	}
    }

  4. #24
    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
    Ok, ma réponse précédente n'est pas pertinente, en voyant l'accès à le base de données, je croyais être dans le constructeur du modèle. Cela étant dit, je peux te faire la remarque inverse, normalement on accède pas directement aux données dans la vue, le modèle étant là pour ça .

    Concernant la sélection, ton composant n'est même pas affiché (on est dans le constructeur de la JFrame) donc "le numéro de colonne sélectionné il me retour -1" le -1 dit seulement qu'il n'y a pas de sélection pour l'instant ce qui est vrai !

  5. #25
    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 oui c'est déjà modifié dans la vue

    Je comprends bien ça mais comment faire

    Il faudrait une valeur sélectionnée par défaut? et lorsque je sélectionne une ligne rien ne change...

  6. #26
    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 comprends bien ça mais comment faire
    Pourquoi accèdes-tu à la sélection dans ton constructeur ?
    Si tu souhaites sélectionner une ligne, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau.changeSelection(...);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    Object  source=e.getSource();
            String pdl = null;
            //si click sur le btnPlus
            if  (source==btnPlus)
            	{
            	//récup du PDL
            	pdl = JOptionPane.showInputDialog(fen, "Vous avez souscrit à l'offre "+ecran.lib_of_selec +", saisissez le PDL correspondant :","PDL",JOptionPane.QUESTION_MESSAGE);
            	//System.out.println(pdl);
            	
            	//mise à jour du Résultat dans tableau
            	String nb_vente = (String) tableau.getValueAt(0,2);
    Ici tu es codé en dur, c'est normal ?

  7. #27
    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 souhaite récupéré le numéro de ligne et de colonne que j'ai sélectionné avec ma souris. il faudrait que je passe par une autre classe c'est ça?

    oui c'est normal que se soit en dur,je teste,mais je n'arrive pas à modifier mes données non plus.

  8. #28
    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
    ah j'y arrive!!!

    il faut que je vois pour modifier mes données maintenant

    Merci de t'attarder sur mon cas

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

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