Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1552 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Modifier ordre des lignes dans JTable (PAS DE TRI)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Modifier ordre des lignes dans JTable (PAS DE TRI)

n°1567640
Galaxie200​7
Posté le 31-05-2007 à 09:20:09  profilanswer
 

Bonjour,
J'ai utilise JTable dans mon interface graphique  pour afficher les coordonnes d'une personne dans un tableau.

Code :
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Vector;
  4. import javax.swing.table.AbstractTableModel;
  5. public class Model extends AbstractTableModel {
  6.  private Vector<Personne> donnees;
  7.  private final String[] titres;
  8.  public Model(Vector donnees, String titres[]) {
  9.   this.donnees = donnees;
  10.   this.titres = titres;
  11.  }
  12.  public int getRowCount() {
  13.   return this.donnees.size();
  14.  }
  15.  public int getColumnCount() {
  16.   return this.titres.length;
  17.  }
  18.  public String getColumnName(int col){
  19.   return titres[col];
  20.  }
  21.  public boolean isCellEditable(int row, int col) {
  22.   return false;
  23.  }
  24.  //
  25.          public void deleteRow(int rowIndex) {
  26.                 donnees.remove(rowIndex);
  27.                 fireTableRowsDeleted(rowIndex,rowIndex); //pour notifier la suppression de la ligne à tous les composants ayant posé un listener sur le model
  28.          }
  29.          public Object getValueAt(int arg0, int arg1) {
  30.   Personne  p = (Personne) donnees.get(arg0);
  31.      if( arg1 == 1) {
  32.         return p.getPrenom();
  33.      } else if( arg1 == 2) {
  34.       return p.getAdresse();
  35.      }
  36.      else if( arg1 == 0) {
  37.       return p.getNom();
  38.      }
  39.      else {
  40.         return null;
  41.      }
  42.  }
  43. }

 
 
Ceux ci est le model de mon tableau . Le code de l'interface graphique est:

Code :
  1. import java.awt.event.*;
  2. import java.util.Vector;
  3. import javax.swing.*;
  4. public class Gui implements ActionListener {
  5. private JFrame cadre;
  6. private JPanel pane;
  7. private JButton bouton_up,bouton_down;
  8. private JTable TAB;
  9. private JScrollPane scrollpane;
  10. private Vector<Personne> VP,temp_pers;
  11. private String [] columns  = { "Nom", "Prenom","Adresse"};
  12. private Personne P1,P2,P3,P4;
  13. public Gui()
  14. {
  15. cadre = new JFrame("test" );
  16. cadre.setSize(200,200);
  17. pane = new JPanel();
  18. bouton_up=new JButton("UP" );
  19. bouton_down=new JButton("DOWN" );
  20. bouton_up.addActionListener(this);
  21. bouton_down.addActionListener(this);
  22. VP = new Vector();
  23. P1 = new Personne ("AAA","aa","France" );
  24. P2 = new Personne ("BBB","bb","France" );
  25. P3 = new Personne ("CCC","cc","France" );
  26. P4 = new Personne ("DDD","dd","France" );
  27. VP.add(P1);
  28. VP.add(P2);
  29. VP.add(P3);
  30. VP.add(P4);
  31.     Model MTable = new Model (VP,columns);
  32.     TAB = new JTable(MTable);
  33. scrollpane= new JScrollPane(TAB,
  34.   ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
  35.   ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
  36. pane.add(scrollpane);
  37. pane.add(bouton_up);
  38. pane.add(bouton_down);
  39. cadre.getContentPane().add(pane);
  40. cadre.setVisible(true);
  41. }
  42. public void actionPerformed(ActionEvent arg0) {
  43.  // TODO Auto-generated method stub
  44.  temp_pers=new Vector();
  45.  if (arg0.getSource()==bouton_up)
  46.  {
  47.  }
  48.  if (arg0.getSource()==bouton_down)
  49.  {
  50.  }
  51. }
  52. public static void main(String[] args) {
  53.  // TODO Auto-generated method stub
  54.  Gui T = new Gui ();
  55. }
  56. }


 
 
ICI j'ai deux boutons up et down. Lorsque je selectionne ligne n°3 et je clique sur bouton up elle devient a position n°2
et si je clique sur bouton down elle devient a position n°4.
J'ai pas connu les instructions a mettre et qui realise cette operation :pt1cable:  :pt1cable:  
 
 
Est ce qu'il ya quelqu'un qui peut m'aider ....Merci

mood
Publicité
Posté le 31-05-2007 à 09:20:09  profilanswer
 

n°1567675
did-54
Posté le 31-05-2007 à 10:11:28  profilanswer
 

faut que tu fasse le swap dans ton vector et tu fireTablemachinchanged()

n°1568288
Galaxie200​7
Posté le 31-05-2007 à 19:28:41  profilanswer
 

did-54 a dit :"swap dans ton vector "  
c'est a dire qoui???

n°1568289
did-54
Posté le 31-05-2007 à 19:30:16  profilanswer
 

je voulais dire, inverser l'ordre des lignes dans ton vector. si tu veux remonter la ligne 4, tu met la ligne 4 dans la ligne 3 et la ligne 3 dans la ligne 4.

n°1568323
Galaxie200​7
Posté le 31-05-2007 à 21:18:59  profilanswer
 

oui je sais en realite c'est iverser les lignes mais avec quel instruction en java

n°1568878
tching pao
Posté le 02-06-2007 à 00:15:48  profilanswer
 

il n'y a pas de fonction toute faite
- tu fais une copie temporaire de la ligne 3 (avec elementAt)
- tu copie la ligne 4 sur la 3 (avec setElement)
- puis la copie temporaire tu la copie sur la ligne 4 (avec setElement)

n°1568880
Xtr3m01
Posté le 02-06-2007 à 00:20:53  profilanswer
 

Hum JTable de base c'est vilainement mal :) Utilise une classe héritant de AbstractTableModel à la place, exemple un DefaultTableModel :) Justement notre DefaultTableModel possède une methode qui swap deux ligne ou qui déplace une ligne dans une autre position, tu peu meme déplacé plusieurs lignes préalablement séléctionner :f
DefaultTableModel: http://java.sun.com/j2se/1.4.2/doc [...] Model.html
Tu crée ton DefaultTableModel avec ton Vector puis tu crées ta JTable avec ton DefaultTableModel et voilà :f apres tes modif tu les fait sur ton DefaultTableModel et par magie les modifications sont repercuté sur l'affichage grace au Listener des TableModels :)
Les JTables ca va pour apprendre :f apres faut passer au level au dessus mais tu veras en fait c'est juste rajouté une couche au final c'est plus simple parce que ta beaucoup plus de méthodes dispo dans les Héritiés de DefaultTableModel


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Modifier ordre des lignes dans JTable (PAS DE TRI)

 

Sujets relatifs
[BATCH] Supprimer le début des lignes d'un fichier[Mysql] Changer l'ordre des champs d'une table
n lignes par pageJTable et CheckBox ca fait 2 !
requete sql: classer par ordre alpha en commencant par une lettre donnCréer e modifier un fichier excel en C#
les cellues de JTable en swingj'ai un problem pour modifier le type d'un champ
[ C# - Débutant] Dessiner des lignesAjax // Ordre d'execution // Gros soucis
Plus de sujets relatifs à : Modifier ordre des lignes dans JTable (PAS DE TRI)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR