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 :

Mettre 4 arguments a SetValueAt


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut Mettre 4 arguments a SetValueAt
    Bonjour à tous,

    J'ai une Jtable avec des éléments cachés.

    J'aimerais transformé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setValueAt(Object value, int row, int col) {
    		list_lignes.get(row).get(col).add(0, value);
    }
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setValueAt(Object value, indice, int row, int col) {
    		list_lignes.get(row).get(col).add(indice, value);
    }
    J'ai codé avec
    -get(row).get(col).get(0) = Valeur affiché dans jtable
    -get(row).get(col).get(1) = Élément 1 caché dans jtable
    -get(row).get(col).get(2) = Élément 2 caché dans jtable


    J'ai mis en place ce système pour afficher en valeur 0 : "0,75 Litres", en valeur 1 : 0.75 (valeur du coef me permettant d'effectuer un calcul).

    De même lorsque j'ai une sélection par un JComboBox,
    en valeur 0 : "abricot", en valeur 1 : 8 (valeur du getId() me permettant de connaitre l'id attribué dans ma base de donnée).

    Le problème est que si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setValueAt(article_preselection.getCoef_doses(), 1, this.row, (this.column +1));
    J'ai une erreur à la compilation lié a la non reconnaissance de cette méthode a 4 arguments.
    Vous avez une idée?

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    J'ai testé de mettre une méthode ou attribut dans le model du jtable. Mais je ne peux pas y accéder avec table.méthode.

    J'ai essayé de mettre une variable de type array. Mais je n'arrive a récupérer les 2 éléments de la variable. Et j'ai plein d'erreur d'incompatibilité de type.

    Si vous avez d'autres idées!

    Merci

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Normal, bu que ce sont des méthodes du modèle.


    Pour y accéder il faut procéder de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyModel myModel = (MyModel) myTable.getModel();
    myModel.myMethod(...);

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci Sinok pour la réponse.

    J'ai appliqué ce que tu m'as dis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Tableau_stock_articles_model table_model = (Tableau_stock_articles_model) table.getModel();
    table_model.setValueAt(article_preselection.getCoef_doses(), 1, this.row, (this.column +1));
    table_model.setValueAt(article_preselection.getNb_dose(), 2, this.row, (this.column +1));
    table.setValueAt(article_preselection.getNom_doses(), this.row, (this.column +1));
    Le model :
    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 setValueAt(Object value, int row, int col) {
    		list_lignes.get(row).get(col).add(0, value);
    		if(col>=2 && col<=4){// On met a jour la quantitée
    			System.out.println("type:  t"+list_lignes.get(row).get(2).get(1)+"t :"+ row);
    		}
            fireTableCellUpdated(row, col);
        }
    	public void setValueAt(Object value, int indice, int row, int col) {
    		list_lignes.get(row).get(col).add(indice, value);
    		fireTableCellUpdated(row, col);
    		System.out.println("table model : row: "+row+" col: "+col+" indice: "+ indice+" Valeur: "+value);
    		System.out.println("table model : "+ list_lignes.get(row).get(col).get(indice));
    	}
    Débug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    table model : row: 0 col: 2 indice: 1 Valeur: 0.0
    table model : 0.0
    table model : row: 0 col: 2 indice: 2 Valeur: 0
    table model : 0
    type:  tt :0
    J'ai donc bien accès au modèle, mais je ne peux pas obtenir la mise a jour du tableau dès que je fait appel a table.setValueAt.
    je devrais avoir dans le débug:
    En gros il met a jour dans un autre tableau que le mien!
    Si tu as une idée?
    Merci

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    l'ordre affiché dans la JTable correspod bien à l'ordre du model ou vous avez réordonné les colonnes?

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Travailler avec les Renderer et les Editor me paraît une bien meilleur idée !
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Je met le code des classes ça sera peut être plus lisible.

    Le code est tiré de la calsse Tableau_stock_articles_model et ComboEditor

    Classe : Tableau_stock_articles_model
    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
    import java.util.ArrayList;
    import javax.swing.table.AbstractTableModel;
     
     
    public class Tableau_stock_articles_model extends AbstractTableModel {
    	private ArrayList<ArrayList<String>>  list_colonnes = new ArrayList<ArrayList<String>>();
    	private ArrayList<ArrayList<ArrayList<Object>>>  list_lignes = new ArrayList<ArrayList<ArrayList<Object>>>();
     
    	public Tableau_stock_articles_model(){
     
    		initTableau();
    	}
     
    	private void initTableau() {
    		list_colonnes.add(0, new ArrayList<String>());
    		list_colonnes.get(0).add(0, "Numero");
    		list_colonnes.add(1, new ArrayList<String>());
    		list_colonnes.get(1).add(0, "Article");
    		list_colonnes.add(2, new ArrayList<String>());
    		list_colonnes.get(2).add(0, "Doses");
    		list_colonnes.add(3, new ArrayList<String>());
    		list_colonnes.get(3).add(0, "Lots");
    		list_colonnes.add(4, new ArrayList<String>());
    		list_colonnes.get(4).add(0, "Quantités par lots");
    		list_colonnes.add(5, new ArrayList<String>());
    		list_colonnes.get(5).add(0, "Prix réel par lots");
    		list_colonnes.add(6, new ArrayList<String>());
    		list_colonnes.get(6).add(0, "Quantités totales");
    		list_colonnes.add(7, new ArrayList<String>());
    		list_colonnes.get(7).add(0, "Montant");
    		list_colonnes.add(8, new ArrayList<String>());
    		list_colonnes.get(8).add(0, "Filtre");
    		list_colonnes.add(9, new ArrayList<String>());
    		list_colonnes.get(9).add(0, "Sous-filtre");
    		list_colonnes.add(10, new ArrayList<String>());
    		list_colonnes.get(10).add(0, "Commentaires");
    	}
     
    	@Override
    	public int getColumnCount() {
    		// TODO Auto-generated method stub
    		return list_colonnes.size();
    	}
     
    	@Override
    	public int getRowCount() {
    		// TODO Auto-generated method stub
    		return list_lignes.size();
    	}
     
    	@Override
    	public String getColumnName(int col) {
    		// TODO Auto-generated method stub
    		return list_colonnes.get(col).get(0);
    	}
     
    	public Object getValueAt(int row, int col) {
    		return list_lignes.get(row).get(col).get(0);
    	}
     
    	public boolean isCellEditable(int row, int col){
    		if(col==1 || col==2 || col==3 || col==4 || col==5 || col==8 || col==9 || col==10){
    			return true; 
    		}
    		else{
    			return false;
    		}
    	}
     
    	public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
     
    	public void setValueAt(Object value, int row, int col) {
    		list_lignes.get(row).get(col).add(0, value);
    		if(col>=2 && col<=4){// On met a jour la quantitée
    			System.out.println("type:  t"+list_lignes.get(row).get(2).get(1)+"t :"+ row);
    			Float col_coef_doses= (Float) ((list_lignes.get(row).get(2).get(1).toString()==null || list_lignes.get(row).get(2).get(1).toString().isEmpty())? 0: (Float.valueOf((String)list_lignes.get(row).get(2).get(1)))) ;
    			int col_nb_doses= (Integer) ((list_lignes.get(row).get(2).get(2)!="") ? list_lignes.get(row).get(2).get(2): 0);
    			int col_lots=(list_lignes.get(row).get(3).get(0).toString().isEmpty())? 0 : Integer.parseInt(list_lignes.get(row).get(3).get(0).toString());
    			int col_quantites=(list_lignes.get(row).get(4).get(0).toString()!="")? Integer.parseInt(list_lignes.get(row).get(4).get(0).toString()): 0 ;
    			int somme_total_doses= (int) ((col_nb_doses==0.f || col_coef_doses.intValue()==0.0)? 0 : Math.floor(col_coef_doses*col_nb_doses));
    			int col_quantite_totales=col_lots*col_quantites+somme_total_doses*col_quantites;
     
    				//int somme=(Integer) Integer.parseInt(list_lignes.get(row).get(3).get(0).toString());
    				list_lignes.get(row).get(6).add(0, col_quantite_totales);
    				fireTableCellUpdated(row, 6);	
    		}
            fireTableCellUpdated(row, col);
        }
    	public void setValueAt(Object value, int indice, int row, int col) {
    		list_lignes.get(row).get(col).add(indice, value);
    		fireTableCellUpdated(row, col);
    		System.out.println("table model : row: "+row+" col: "+col+" indice: "+ indice+" Valeur: "+value);
    		System.out.println("table model : "+ list_lignes.get(row).get(col).get(indice));
    	}
     
    	public void addNewRow() {
    		int n_ligne = (list_lignes.size()==0) ? 0 : list_lignes.size();
    		System.out.println(n_ligne);
    		list_lignes.add(n_ligne, new ArrayList<ArrayList<Object>>());
    		list_lignes.get(n_ligne).add(0, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(0).add(0, String.valueOf(n_ligne+1));
    		list_lignes.get(n_ligne).add(1, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(1).add(0, "");
    		list_lignes.get(n_ligne).add(2, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(2).add(0, "");
    		list_lignes.get(n_ligne).add(3, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(3).add(0, "");
    		list_lignes.get(n_ligne).add(4, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(4).add(0, "");
    		list_lignes.get(n_ligne).add(5, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(5).add(0, "");
    		list_lignes.get(n_ligne).add(6, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(6).add(0, "");
    		list_lignes.get(n_ligne).add(7, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(7).add(0, "");
    		list_lignes.get(n_ligne).add(8, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(8).add(0, "");
    		list_lignes.get(n_ligne).add(9, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(9).add(0, "");
    		list_lignes.get(n_ligne).add(10, new ArrayList<Object>());
    		list_lignes.get(n_ligne).get(10).add(0, "");
    	}
    }
    Classe ComboEditor
    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
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
     
    import javax.swing.DefaultCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.JTable;
     
    import com.pforissier.dao.tables.ArticlesDao;
    import com.pforissier.dao.tables.FiltresDao;
    import com.pforissier.dao.tables.SousFiltresDao;
    import com.pforissier.model.Articles;
    import com.pforissier.model.Filtres;
    import com.pforissier.model.SousFiltres;
    import com.pforissier.model.Tableau_stock_articles_model;
     
    public class ComboEditor extends DefaultCellEditor {
    	JComboBox combo2;
    	private ComboBoxListener cListener = new ComboBoxListener();
     
    	public ComboEditor(JComboBox combo) {
    		super(combo);
    		//On crée à nouveau notre bouton
    		combo2=combo;
    	    //On lui attribue un listener
    		combo2.addActionListener(cListener);
    		System.out.println("fin");
    	}
     
    	public Component getTableCellEditorComponent(JTable table, Object value,
                boolean isSelected, int row, int column) {
    		//On définit la valeur de la ligne à notre listener
    		cListener.setValue(value);
    		//On définit le numéro de ligne à notre listener
    		cListener.setRow(row);
    		//Idem pour le numéro de colonne
    		cListener.setColumn(column);
    		//On passe aussi le tableau pour des actions potentielles
    		cListener.setTable(table);
    		System.out.println("update");
    		return combo2;		
    	}
     
    	public class ComboBoxListener implements ActionListener {
    		private int column, row;
    		private Object value;
    		private JTable table;
    		private JComboBox combo_sous_filtres = new JComboBox();
    		private ArrayList<String> array_sous_filtres= new ArrayList<String>();
    		private ArrayList<SousFiltres> array_sous_filt;
    		private FiltresDao filtresDao= new FiltresDao();
     
    		public void setColumn(int col){this.column = col;}
    		public void setRow(int row){this.row = row;}
    		public void setTable(JTable table){this.table = table;}
    		public void setValue(Object value){this.value = value;}
     
    		public void actionPerformed(ActionEvent event) {
    			JComboBox cb = (JComboBox)event.getSource();
    			if(this.column ==1){
    		        String article = (String)cb.getSelectedItem();
    		        // On recherche les présélections de l'article:
    		        ArticlesDao articleDao= new ArticlesDao();
    		        Articles article_preselection=articleDao.find("articles.nom", article);
    		        String nom_filtre=(article_preselection.getNom_filtre()!=null)?article_preselection.getNom_filtre():"";
    		        String nom_sous_filtre=(article_preselection.getNom_sous_filtre()!=null)?article_preselection.getNom_sous_filtre():"";
    		        int somme_total= (int) Math.floor(article_preselection.getNb_dose()*article_preselection.getCoef_doses());
    		        System.out.println(somme_total);
    		    	Tableau_stock_articles_model table_model = (Tableau_stock_articles_model) table.getModel();
    		    	table_model.setValueAt(article_preselection.getCoef_doses(), 1, this.row, (this.column +1));
    		    	table_model.setValueAt(article_preselection.getNb_dose(), 2, this.row, (this.column +1));
    		    	table.setValueAt(article_preselection.getNom_doses(), this.row, (this.column +1));
    		    	table.setValueAt(article_preselection.getLots_par_defaut(), this.row, (this.column +2));
    		    	//table.setValueAt(article_preselection.getPrix(), this.row, (this.column +4));
     
     
    		    	//Redéfinition Filtre
    		    	table.setValueAt(nom_filtre, this.row, (this.column +7));// Valeur
    		    	ArrayList<Filtres> array_filt;
    				array_filt=filtresDao.select();
    				JComboBox combo_filtres = new JComboBox();
    				for(int x=0;x<array_filt.size();x++){
    					combo_filtres.addItem(array_filt.get(x).getNom());
    				}
    				combo_filtres.setSelectedItem(nom_filtre);
    				table.getColumn("Filtre").setCellEditor(new ComboEditor(combo_filtres));
     
    		    	//Redéfinition sous filtre
    		    	table.setValueAt(nom_sous_filtre, this.row, (this.column +8)); // Valeur
    		    	SousFiltresDao sousfiltresDao= new SousFiltresDao();
    		    	array_sous_filt=sousfiltresDao.select("id_filtre", String.valueOf(article_preselection.getFiltre_par_defaut()), 0);
    		    	init_sous_filtres();
    			}
    	    	else if(this.column ==8){
    	    		String filtre = (String)cb.getSelectedItem();
    	    		Filtres filtres = filtresDao.find("nom", filtre);
    	    		table.setValueAt("", this.row, (this.column +1));
     
     
    	    		SousFiltresDao sousfiltresDao= new SousFiltresDao();
    	    		System.out.println("Filtres: "+filtres.getId());
    	    		array_sous_filt=sousfiltresDao.select("id_filtre", String.valueOf(filtres.getId()), 0);
    	    		combo_sous_filtres.removeAllItems();
    	    		init_sous_filtres();
    	    		System.out.println("colonne 8");
    	    	}
    	    }
    		private void init_sous_filtres() {
    			combo_sous_filtres.removeAllItems();
        		for(int x=0;x<array_sous_filt.size();x++){
        			combo_sous_filtres.addItem(array_sous_filt.get(x).getNom());
        			array_sous_filtres.add(array_sous_filt.get(x).getNom());
        		}
        		table.getColumn("Sous-filtre").setCellEditor(new DefaultCellEditor(combo_sous_filtres));
        		table.getColumn("Sous-filtre").setCellRenderer(new ComboRenderer(array_sous_filtres));
    		}
    	}
    }

    La classe de l'affichage du tableau dans le panel:
    Classe : Approvisionner_stock_articles_Panel
    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
    173
    174
    175
    176
    177
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
    import javax.swing.DefaultCellEditor;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JComponent;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
    import com.pforissier.controler.Chiffre;
    import com.pforissier.controler.Dimension_taille;
    import com.pforissier.controler.Police;
    import com.pforissier.dao.DAO;
    import com.pforissier.dao.tables.ArticlesDao;
    import com.pforissier.dao.tables.DosesDao;
    import com.pforissier.dao.tables.FiltresDao;
    import com.pforissier.dao.tables.SousFiltresDao;
    import com.pforissier.model.Articles;
    import com.pforissier.model.ColorColumnRenderer;
    import com.pforissier.model.Doses;
    import com.pforissier.model.Filtres;
    import com.pforissier.model.Membres;
    import com.pforissier.model.Model;
    import com.pforissier.model.SizeColumnHeader;
    import com.pforissier.model.SousFiltres;
    import com.pforissier.model.Tableau_boissons_model;
    import com.pforissier.model.Tableau_stock_articles_model;
    import com.pforissier.observer.Observable;
     
     
    public class Approvisionner_stock_articles_Panel extends ZContainer {
    	private Model model;
    	private Membres membre;
    	private DAO<Articles> articlesDao = new ArticlesDao();
    	private DAO<Doses> dosesDao = new DosesDao();
    	private DAO<Filtres> filtresDao = new FiltresDao();
    	private DAO<SousFiltres> sousfiltresDao = new SousFiltresDao();
    	public Approvisionner_stock_articles_Panel(Dimension dim, Observable mod, Membres membre) {
    		super(dim);
    		this.model = (Model)mod;
    		initPanel();
    		this.membre=membre;
    		// TODO Auto-generated constructor stub
    	}
    	@Override
    	protected void initPanel() {
    		// TODO Auto-generated method stub
    		//Titre
    		JLabel titre = new JLabel("APPROVISIONNEMENT DES STOCKS");
    		titre.setHorizontalAlignment(JLabel.CENTER);
    		titre.setFont(Police.comics40);
    		titre.setPreferredSize(Dimension_taille.taille_3_36);
    		this.panel.add(titre, BorderLayout.NORTH);
     
    		JPanel head = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
    		head.setPreferredSize(Dimension_taille.taille_3_11s360);
     
    		///////////////////////////////////  Tableau
    		JPanel tableau = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
    		tableau.setPreferredSize(Dimension_taille.taille_31s90_67s180);
    		final JTable table = new JTable(new Tableau_stock_articles_model());
     
    		//Render
    		render_table(table);
     
            //Create the scroll pane and add the table to it.
            JScrollPane scrollPane = new JScrollPane(table);
     
            //Add the scroll pane to this panel.
     
    		tableau.add(scrollPane);
     
    		// Bouton Ajouter ligne
    		JButton ajout_ligne = new JButton("Ajouter ligne");
    		ajout_ligne.setFont(Police.arial24);
    		ajout_ligne.setPreferredSize(Dimension_taille.taille_2s45_36);
    		ajout_ligne.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Tableau_stock_articles_model refModel = (Tableau_stock_articles_model)table.getModel();
    				refModel.addNewRow();
    				render_table(table);
    			}
    		});
    		head.add(ajout_ligne);
     
    		// Bouton Supprimer ligne
    		JButton supprimer_ligne = new JButton("Supprimer ligne");
    		supprimer_ligne.setFont(Police.arial24);
    		supprimer_ligne.setPreferredSize(Dimension_taille.taille_2s45_36);
    		supprimer_ligne.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				if(table.getSelectedRow()!=-1){
    				}
    				else{
    					JOptionPane
    					.showMessageDialog(
    							null,
    							"Impossible de supprimer si il n'y a pas de ligne de sélectionnée",
    							"Erreur", JOptionPane.ERROR_MESSAGE);
    				}
    			}
    		});
    		head.add(supprimer_ligne);
     
    		this.panel.add(head, BorderLayout.NORTH);
    		this.panel.add(tableau, BorderLayout.CENTER);
    	}
     
    	private void render_table(JTable table){
    		//On modifie la hauteur des lignes 
    		table.setRowHeight(30);		
    		//Render
    		//On recherche
    		ArrayList<Articles> array_art;
    		ArrayList<String> array_article= new ArrayList<String>();
    		array_art=articlesDao.select();
    		JComboBox combo_article= new JComboBox(), combo_doses = new JComboBox(), combo_filtres = new JComboBox(), combo_sous_filtres = new JComboBox();
    		for(int x=0;x<array_art.size();x++){
    			combo_article.addItem(array_art.get(x).getNom());
    			array_article.add(array_art.get(x).getNom());
    		}
    		ArrayList<String> array_doses= new ArrayList<String>();
    		ArrayList<Doses> array_dos;
    		array_dos=dosesDao.select();
    		for(int x=0;x<array_dos.size();x++){
    			combo_doses.addItem(array_dos.get(x).getNom());
    			array_doses.add(array_dos.get(x).getNom());
    		}
    		ArrayList<String> array_filtres= new ArrayList<String>();
    		ArrayList<Filtres> array_filt;
    		array_filt=filtresDao.select();
    		for(int x=0;x<array_filt.size();x++){
    			combo_filtres.addItem(array_filt.get(x).getNom());
    			array_filtres.add(array_filt.get(x).getNom());
    		}
    		ArrayList<String> array_sous_filtres= new ArrayList<String>();
    		ArrayList<SousFiltres> array_sous_filt;
    		array_sous_filt=sousfiltresDao.select("id_filtre", String.valueOf(0), 0);// On met pas de sous-filtre
    		for(int x=0;x<array_sous_filt.size();x++){
    			combo_sous_filtres.addItem(array_sous_filt.get(x).getNom());
    			array_sous_filtres.add(array_sous_filt.get(x).getNom());
    		}
     
    		combo_article.setSelectedIndex( -1 );
    		combo_doses.setSelectedIndex( -1 );
    		combo_sous_filtres.setSelectedIndex( -1 );
    		table.getColumn("Article").setCellEditor(new ComboEditor(combo_article));
    		table.getColumn("Article").setCellRenderer(new ComboRenderer(array_article));
     
    		table.getColumn("Doses").setCellEditor(new DefaultCellEditor(combo_doses));
    		table.getColumn("Doses").setCellRenderer(new ComboRenderer(array_doses));
     
    		table.getColumn("Filtre").setCellEditor(new ComboEditor(combo_filtres));
    		table.getColumn("Filtre").setCellRenderer(new ComboRenderer(array_filtres));
     
    		table.getColumn("Sous-filtre").setCellEditor(new DefaultCellEditor(combo_sous_filtres));// A modifier
    		table.getColumn("Sous-filtre").setCellRenderer(new ComboRenderer(array_sous_filtres));
    		//UIManager.put("Table.alternateRowColor", Color.decode("#E1E4F2")); // Couleur alternative sur ligne
    		//new SizeColumnHeader(table);//Redéfinition largeur colonne
    		//Redéfinition couleur colonnes
    		//ColorColumnRenderer table_defaut = new ColorColumnRenderer(new Color(255, 199, 206), Color.red);
    		//table_defaut.centrerTable(table);
    		//table.getColumnModel().getColumn(table.getColumnCount()-1).setCellRenderer(table_defaut);
    		//Taille du scroll pane
            table.setPreferredScrollableViewportSize(Dimension_taille.taille_3_5s18);
            table.setFillsViewportHeight(true);
    	}
    }
    Tchize, je n'ai pas compris le sens de ta question. J'ai mis les classes complètes actuellement.

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Les lignes et les colonnes d'une table ne correspondent pas nécessairement à ceux du modèle :
    Tu peux masquer la première ligne du modèle ou changer l'ordre d'affichage des lignes du modèle avec un RowSorter

    Idem tu peux changer l'affichage des colonnes par rapport à celles du modèle.

    Ainsi la table fournie des méthodes pour convertir les index:


    En tout cas je n'utiliserai pas ta méthode de "masquer" une colonne pour stocker la valeur numérique de la valeur textuelle. C'est le rôle des Renderer et des Editor de gérer ça.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  9. #9
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par peofofo Voir le message
    J'ai mis en place ce système pour afficher en valeur 0 : "0,75 Litres", en valeur 1 : 0.75 (valeur du coef me permettant d'effectuer un calcul).

    De même lorsque j'ai une sélection par un JComboBox,
    en valeur 0 : "abricot", en valeur 1 : 8 (valeur du getId() me permettant de connaitre l'id attribué dans ma base de donnée).
    Ce que je comprends c'est que tu gères une colonne avec la valeur affichée et une autre avec la valeur numérique ou l'identifiant.
    Le modèle devrait uniquement géré la valeur numérique ou l'identifiant.

    Charge à tes editors/renderers de mapper correctement ces valeurs ou identifiants.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Pour moi le modèle gère tous, car c'est lui qui met à jour toutes les données.

    Merci à toi, mais j'ai cette fois-ci corriger cette méthode.
    L'avantage est la facilitée de connaitre son attribut et de faire des calculs autour du modèle.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/04/2018, 12h03
  2. [XL-2002] Que mettre en argument quand on appelle la procédure Exit d'un TextBox
    Par Touffe54 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2010, 21h17
  3. Réponses: 2
    Dernier message: 22/08/2008, 16h09
  4. Mettre en argument un nom de fichier
    Par stansoad0108 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/05/2008, 09h48
  5. mettre des arguments ds Document.Saisie.Action?
    Par zorba49 dans le forum VBScript
    Réponses: 2
    Dernier message: 21/06/2006, 11h14

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