alias100
Messages postés129Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention 2 décembre 2012
-
28 mai 2007 à 17:32
alias100
Messages postés129Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention 2 décembre 2012
-
31 mai 2007 à 09:07
bonjour,
j'ai developpe un JTable et deux bouton up & down dans une interface graphique avec swing.
Je veux changer l'ordre de la ligne selectinnee de tableau en haut ou en bas selon le bouton clique:
J'ai cherche bien l'instruction dans la classe de JTable dans javadoc et j'ai pas trouve une instruction pour l'ordre???
est ce que il ya quelqu'un qui sait comment on peut la faire.
Merci pour vous aides
breathfromhell
Messages postés26Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention 6 mars 2009 29 mai 2007 à 17:31
bien sur tu peux faire ca mais tu dois reagir sur la TableModel tu connais deja comment instancier ta JTable deux possibilites;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class MTableModelExemple extends AbstractTableModel
{
private static final long serialVersionUID = 1L;
Object data[][];
String titres[];
public void setData(Object[][] data)
{
this.data = data;
}
public void setData(Vector data)
{
Object[][] temp = new Object[data.size()][];
for(int i = 0 ; i <data.size(); i++)
{
Vector current = (Vector) data.get(i);
temp[i] = new Object[current.size()];
for(int j = 0; j < current.size();j++)
{
temp[i][j] = current.get(j);
}
}
this.data = temp;
}
public Object[][] getData()
{
return this.data;
}
public void setTitres(Vector names)
{
String[] temp = new String[names.size()];
for(int i = 0;i < names.size();i++)
{
temp[i] = (String)names.get(i);
}
this.titres = temp;
}
public void setTitres(String [] titres)
{
this.titres = titres;
}
public Object[] getColumnNames()
{
return this.titres;
}
public int getRowCount()
{
return this.data.length;
}
public int getColumnCount()
{
return this.titres.length;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
return data[rowIndex][columnIndex];
}
public MTableModelExemple()
{
data = new Object[1][1];
titres = new String [1];
}
// tes fonctions fonctionnelles
public void setRowUp(int index)
{
if(index < -1 || index > data.length)
return;
Object tempData[][] = new Object[data.length][titres.length];
for(int i =0;i < titres.length;i++)
{
tempData[0][i] = data[index][i];
}
int k = 1;
for(int i = 0;i < data.length;i++)
{
for(int j = 0;j < titres.length;j++)
{
if(i != index)
{
tempData[k][j] = data[i][j];
k++;
}
}
}
this.data = tempData;
fireTableDataChanged();
}
}
voila tu peux adapter ca a ton projet
MTableModelExemple MTable = new MTableModelExemple ();
MTable.setData(taMatrice);
MTable.setTitres(tableDeTitre);
JTable matable = new JTable(MTable);
pour appeler la fonction matable.getModel().setUp(NumeroDeLaLigne);
tu recompile et tu essaye c pas exacte a 100% car j ai pas essayer mais ca va te donner une idee au moins
Vous n’avez pas trouvé la réponse que vous recherchez ?
breathfromhell
Messages postés26Date d'inscriptionvendredi 23 mars 2007StatutMembreDernière intervention 6 mars 2009 30 mai 2007 à 16:49
tu vas pas utiliser matabble.getModel() biensur il va pas reconnaitre la methode tu vas faire MTable.setRowUp() ca ila va connaitre ta JTable vas se modifier dans la fonction setRowUp() on a utilise fireTableDataChanged();
pour vecteur ou bien Object[][] c pas un grand probleme tu peux implementer une methode qui transform un vect en Object[][]
dans la classe MTableModelExemple tu vas ajouter deux setters voila :
public void setData(Vector data)
{
Object[][] temp = new Object[data.size()][];
for(int i = 0 ; i <data.size(); i++)
{
Vector current = (Vector) data.get(i);
temp[i] = new Object[current.size()];
for(int j = 0; j < current.size();j++)
{
temp[i][j] = current.get(j);
}
}
this.data = temp;
}
de meme pour les titres :
public void setTitres(Vector names)
{
String[] temp = new String[names.size()];
for(int i = 0;i < names.size();i++)
{
temp[i] = (String)names.get(i);
}
this.titres = temp;
public Model(Vector donnees, String titres[]) {
this.donnees = donnees;
this.titres = titres;
}
public int getRowCount() {
return this.donnees.size();
}
public int getColumnCount() {
return this.titres.length;
}
public String getColumnName(int col){
return titres[col];
}
public boolean isCellEditable(int row, int col) {
return false;
}
//
public void deleteRow(int rowIndex) {
donnees.remove(rowIndex);
fireTableRowsDeleted(rowIndex,rowIndex); //pour notifier la suppression de la ligne à tous les composants ayant posé un listener sur le model
}
j'ai reflechi pour UP: je ne sais pas est ce que le code est juste ou pas:
int ligne_selec = TAB.getSelectedRow();
if(ligne_selec>0)
{
Personne P=(Personne)VP.get(ligne_selec);
VP.remove(P);
temp_pers.add(P);
Personne P_av=(Personne)VP.get(ligne_selec-1);
VP.add(ligne_selec-1,P);