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 :

'Rafraichir' un JTable


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Points : 50
    Points
    50
    Par défaut 'Rafraichir' un JTable
    Bonjour,
    J'utilise une Jtable qui au départ est 'vide'. Ensuite, je souhaite inclure des données mais l'affichage ne s'effectue pas !
    Voici mon code pour plus de compréhension:
    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
     
    public class OrderLinesTableModel extends AbstractTableModel implements ListSelectionListener{
    	private Customer c;
    	private List<Order> ols;
    	private String[] columnNames={"Article","Qty","State","PriceInclTax","TotalInclTax", "Customer"};
    	private Facade facade;
    	private ResourceBundle resourceBundle;
     
    	public OrderLinesTableModel(Facade facade) {
    		this.facade=facade;
    	}
     
    	@Override
    	public void valueChanged(ListSelectionEvent e) {
    		c=(Customer)((JList)e.getSource()).getSelectedValue();
    		getOrderLine(c);
     
    	}
     
    	public void getOrderLine(Customer c){
    		ols = facade.getOrders(c);
    		fireTableDataChanged();
    	}
     
     
    	@Override
    	public int getRowCount() {
    		if(ols==null){
    			return 0;
    		}else{
    			return ols.size();
    		}
    	}
     
    	@Override
    	public String getColumnName(int column) {
    		resourceBundle=ResourceBundle.getBundle("MainView", Facade.getLocale());
    		return txt(columnNames[column]);
    	}
     
    	@Override
    	public int getColumnCount() {
    		return columnNames.length;
    	}
     
    	private String txt(String key){
    		return resourceBundle.getString(key);
    	}
     
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		Order order =  (Order) ols.get(rowIndex);
    		switch (columnIndex) {
    		case 0:
    			return order.getRefOrder();
    		case 1:
    			return order.getIdOrder();
    		case 2:
    			return "test";
    		case 3:
    			return "";
    		case 4:
    			return "";
    		case 5:
    			return "";
    		}
    		return null;
    	}
     
     
    }
    Quand, à 'partir' de ma vue, je fais appel à la méthode getOrderLine(Customer c), je remplis ma liste <Order> ols. Ensuite, dans cette même méthode, j'effectue la méthode fireTableDataChanged() pour signaler à ma table que les données ont changé mais ça n'effectue aucun changement...
    Est-ce que quelqu'un voit où est le problème ?

    Merci d'avance.

    Marc

  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 : 55
    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,

    à première vue je ne vois pas de problème, mais impossible de tester en réel sans avoir le code complet.

    As-tu essayé, en mode debug, ou par trace, si tu passais dans ta méthode getOrderLine et quelle était la valeur de ols après son appel ? Si cette variable reste null, ou la liste est vide, tu n'auras évidemment rien d'affiché.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Points : 50
    Points
    50
    Par défaut
    J'ai finalement trouvé. Dans ma facade (qui étend Observable), dans ma méthode qui modifie ma liste de commande, j’avais placé setChanged() et notifyObservers() en début de méthode à la place de les mettre en fin de méthode.
    De plus, j’ai retravaillé légèrement mon code…

    Marc

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

Discussions similaires

  1. [Java] Rafraichir Tableau (JTable)
    Par SoGeek dans le forum Composants
    Réponses: 6
    Dernier message: 27/04/2010, 14h44
  2. Rafraichir une JTable
    Par vega_55 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/10/2008, 17h58
  3. Rafraichir une jtable
    Par tit_oune dans le forum Composants
    Réponses: 5
    Dernier message: 12/04/2006, 15h00
  4. Comment rafraichir une JTable
    Par critok dans le forum Composants
    Réponses: 3
    Dernier message: 06/12/2005, 13h48
  5. [JTable] Rafraichir une JTable
    Par nesbla dans le forum Composants
    Réponses: 4
    Dernier message: 08/12/2004, 13h40

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