|
begin process at 2008 05 12 08:05:48
Derniers logiciels
|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
JTABLE GÉNÉRIQUE : TRI,AJOUT,SUPPRESSION,CTRL CLASSE,TAILLE COL,SÉLECTION DES COL,RECUP LIGNES SUPP
Information sur la source
Description
Permet d'utliser une jtable de manière générique et dynamique !
Source
- Utilisation de la jtable :
- Déclarer:
- public TableModelPerso T;
- public Tableur TAB;
- Appel:
- T=new TableModelPerso (
- vect, // de type Object[][] contient les données
- Colemploye, //de type String[] contient les entetes de col
- false, // false si maj,true si sélection uniquement
- vcoleditable, //de type Boolean[] les colonnes modifiables = true
- ctrlcolemploye, //de type String[] classes des col int,long,double,float,string,date,boolean
- vsize); // de type int[] taille des colonnes
- TAB=new Tableur(T,1); // 0 si interdiction d'ajouter ou supprimer les lignes,1 sinon
- TAB.affiche(this);
-
- // le retour se fait via l'évents windowActivated de votre frame
- // récupère les données via T.getDonnees() de type Object[][]
- //récupère les lignes supp via T.getLignesup() de type Object[][]
-
- copier ces deux classes
-
- 1
-
- import javax.swing.*;
- import javax.swing.table.TableModel;
- import javax.swing.event.*;
- import java.awt.Dimension;
- import java.awt.event.*;
- import javax.swing.table.DefaultTableColumnModel;
- import javax.swing.table.AbstractTableModel;
- import java.awt.Color;
- import java.awt.*;
- import javax.swing.JButton;
- import javax.swing.table.DefaultTableModel;
-
-
- class Tableur extends JPanel implements TableModelListener
- {
- private Object[][] donnees;
- private String[] nomsColonnes;
- private JTable table;
- private TableModel tableur;
- private int[] vsize;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JButton aj1,aj2;
- private TableModelPerso tt;
- private int ajoutsupp;
- private int posilig;
-
-
-
-
- Tableur(TableModelPerso vtablemodelperso,int vajoutsupp)
- {
- tt=vtablemodelperso;
- ajoutsupp=vajoutsupp;
- this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
- table = new JTable(vtablemodelperso);
- table.setColumnSelectionAllowed(true);
- table.setRowSelectionAllowed(true);
- table.setSelectionBackground(Color.BLUE);
- table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- int[] vsize=vtablemodelperso.getSizecol();
- int tailletot=0;
- for (int i=0;i<vsize.length;i++)
- {
- table.getColumnModel().getColumn(i).setPreferredWidth(vsize[i]);
- if (vsize[i]==0) {table.getColumnModel().getColumn(i).setMinWidth(vsize[i]);table.getColumnModel().getColumn(i).setMaxWidth(vsize[i]);}
- tailletot=tailletot+vsize[i];
- }
- vtablemodelperso.addEcouteur(table);
- table.setPreferredScrollableViewportSize(new Dimension(tailletot+100, 300));
- JScrollPane avecAsc = new JScrollPane(table);
- jLabel1 = new javax.swing.JLabel();
- jLabel1.setBackground(new java.awt.Color(255, 255, 51));
- jLabel1.setText("Double clic sur une colonne pour trier la table");
- jLabel1.setOpaque(true);
- jLabel1.setName("TITRE");
- jLabel1.setPreferredSize(new java.awt.Dimension(55, 20));
- aj1 = new javax.swing.JButton();
- aj1.setBackground(new java.awt.Color(255, 255, 51));
- aj1.setText("Ajouter une ligne");
- aj1.setPreferredSize(new java.awt.Dimension(150, 25));
- aj2 = new javax.swing.JButton();
- aj2.setBackground(new java.awt.Color(255, 255, 51));
- aj2.setText("Supprimer une ligne");
- aj2.setPreferredSize(new java.awt.Dimension(150, 25));
- add(jLabel1);
- add(avecAsc);
- table.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- posilig=(table.rowAtPoint(evt.getPoint()));
- }
- });
- if (!vtablemodelperso.isTypeselection() & ajoutsupp!=0){
- add(aj1);
- aj1.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- tt.addligne();
- }});
- add(aj2);
- aj2.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- if (tt.getDonnees().length==0)
- {
- JOptionPane d = new JOptionPane();
- d.showMessageDialog( d.getParent(),"Plus de ligne!","Erreur!",JOptionPane.ERROR_MESSAGE);
- return;
- }
- table.changeSelection(posilig,0,false,false);
- for (int k=0;k<tt.getColumnCount();k++)
- {
- table.changeSelection(posilig,k,false,true);
- }
- tt.suppligne(posilig);
- }});
- }
- }
- public void tableChanged(TableModelEvent e)
- {
- }
- public void affiche( JFrame j,String vtitre)
- {
- final JFrame v=j;
- JFrame monCadre = new JFrame();
- monCadre.setTitle(vtitre);
- monCadre.setContentPane(this);
- monCadre.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent evt)
- {
- v.show();
- }
- });
- Insets insets = monCadre.getInsets();
- monCadre.setSize(300 + insets.left + insets.right,125 + insets.top + insets.bottom);
- java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- monCadre.setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
- monCadre.pack();
- monCadre.setVisible(true);
- }
-
- public Point getLocation() {
- Point retValue;
- retValue = super.getLocation();
- System.out.println(retValue);
- return retValue;
- }
- public String[] getNomsColonnes() {
- return nomsColonnes;
- }
- }
-
-
- 2
-
- import javax.swing.table.AbstractTableModel;
- import javax.swing.AbstractCellEditor;
- import javax.swing.table.TableCellEditor;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.util.Arrays;
- import java.util.Date;
- import java.text.SimpleDateFormat;
-
- public class TableModelPerso extends AbstractTableModel
- {
- private Object[][] donnees,donnees1,lignesup,lignesup1,copydonnees;
- private String[] nomsColonnes;
- private boolean[] colmodifiable;
- private boolean typeselection;
- private String[] ctrlcol;
- private int[] sizecol;
- private Ligne[] lignes,lignes1;
- private int colonneTri;
- private Boolean vyes=new Boolean (true);
-
-
- private Boolean vno=new Boolean (false);
- private TableModelPerso model;
-
-
- public TableModelPerso (Object[][] vdonnees, String[] vnomsColonnes,boolean vtypeselection,boolean[] vcolmodifiable,String vctrlcol[],int[] vsizecol) {
-
- typeselection=vtypeselection;
- ctrlcol=new String[vctrlcol.length];
- sizecol=new int[vsizecol.length];
- if (typeselection==true){
- donnees=new Object[vdonnees.length][vnomsColonnes.length+1];
- nomsColonnes=new String[vnomsColonnes.length+1];
- nomsColonnes[vnomsColonnes.length]="Sélection";
- colmodifiable=new boolean[vcolmodifiable.length+1];
- colmodifiable[vcolmodifiable.length]=true;
- int i;
- for (i=0;i<donnees.length;i++)
- { donnees[i][vnomsColonnes.length]=vno; }
- donnees[0][vnomsColonnes.length]=vyes;
- }
- else
- {
- lignesup=new Object[vdonnees.length][vnomsColonnes.length];
- donnees=new Object[vdonnees.length][vnomsColonnes.length];
- nomsColonnes=new String[vnomsColonnes.length];
- colmodifiable=new boolean[vcolmodifiable.length];
- }
-
- int i,j;
- for (i=0;i<vdonnees.length;i++)
- {
- for (j=0;j<vnomsColonnes.length;j++)
- {donnees[i][j]=vdonnees[i][j];}
- }
- for (j=0;j<vnomsColonnes.length;j++)
- {
- nomsColonnes[j]=vnomsColonnes[j];
- if (typeselection==true)
- colmodifiable[j]=false;
- else
- colmodifiable[j]=vcolmodifiable[j];
- }
- for (j=0;j<vctrlcol.length;j++)
- {ctrlcol[j]=vctrlcol[j];}
- for (j=0;j<vsizecol.length;j++)
- {sizecol[j]=vsizecol[j];}
- model=this;
- lignes = new Ligne[model.getRowCount()];
- for (i = 0; i < lignes.length; i++) {
- lignes[i] = new Ligne();
- lignes[i].index = i;
- }
- }
-
- public boolean isCellEditable(int row, int col) {
-
- if (colmodifiable[col]==false)
- return false;
- else
- return true;
- }
- public int getColumnCount() {
- return nomsColonnes.length;
- }
- public Object getValueAt(int parm1, int parm2) {
- return donnees[parm1][parm2];
-
- }
- public int getRowCount() {
- return donnees.length;
- }
- public String getColumnName(int col){
- return nomsColonnes[col];
- }
- public Object[][] getDonnees() {
- return donnees;
- }
- public Object[][] getLignesup() {
- return lignesup;
- }
- public void setValueAt(Object value, int row, int col) {
- if (typeselection)
- {
- int i;
- for(i=0;i<donnees.length;i++)
- {
- if ((donnees[i][nomsColonnes.length-1])==vyes)
- donnees[i][nomsColonnes.length-1]=vno;
- }
- donnees[row][nomsColonnes.length-1]=vyes;
- fireTableDataChanged();
- }
- else
- {
- // on peut ajouter d'autres ctrl depend de la façon dont vous gérer les nombres'
- if (ctrlcol[col].equalsIgnoreCase("Date"))
- {
- try {java.sql.Date dd=java.sql.Date.valueOf((String) value);donnees[row][col]=value;fireTableDataChanged();}
- catch (Exception e){
- JOptionPane d = new JOptionPane();
- d.showMessageDialog( d.getParent(),"Erreur de date","Attention !",JOptionPane.ERROR_MESSAGE);
- }
- }
- else
- {
- if (value!=null)
- {
- if (value.getClass() != getColumnClass(col))
- {
- donnees[row][col]=null;
- }
- else
- {
- donnees[row][col]=value;}
- }
-
- fireTableDataChanged();
- }
- }
- }
- public void clear () {
- for (int i = 0;i < nomsColonnes.length;i++)
- donnees[i]=null;
- fireTableDataChanged();
- }
- public Class getColumnClass(int columnIndex) {
- return getValueAt(0, columnIndex).getClass();
- }
- public boolean isTypeselection() {
- return typeselection;
- }
- public int[] getSizecol() {
- return sizecol;
- }
-
- private class Ligne implements Comparable {
- public int index;
- public int compareTo(Object autre) {
- Ligne autreLigne = (Ligne)autre;
- Object cellule = model.getValueAt(index, colonneTri);
- Object autreCellule = model.getValueAt(autreLigne.index, colonneTri);
- return ((Comparable)cellule).compareTo(autreCellule );
- }
- }
- public void addEcouteur(final JTable table) {
- table.getTableHeader().addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent event) {
- if (event.getClickCount() < 2) return;
- int tableColumn = table.columnAtPoint(event.getPoint());
- int modelColumn = table.convertColumnIndexToModel(tableColumn);
- sort(modelColumn);
- }
- });
- }
- public void sort(int c) {
- colonneTri = c;
- Arrays.sort(lignes);
- copydonnees=new Object [donnees.length][nomsColonnes.length];
- for (int j=0;j<lignes.length;j++){copydonnees[j]=donnees[lignes[j].index];}
- for (int j=0;j<lignes.length;j++){donnees[j]=copydonnees[j];}
- fireTableDataChanged();
- }
- public void addligne() {
- int i;
- donnees1=new Object[donnees.length+1][nomsColonnes.length];
- lignesup1=new Object[lignesup.length+1][nomsColonnes.length];
- for ( i=0;i<donnees.length;i++){donnees1[i]=donnees[i];}
- for (int j=0;j<nomsColonnes.length;j++)
- { // dépend de la façon dont vous gérez les nombres (string ou non)
- if (ctrlcol[j].equalsIgnoreCase("int")) donnees1[i][j]=new Integer(0);
- if (ctrlcol[j].equalsIgnoreCase("long")) donnees1[i][j]=new Long (0);
- if (ctrlcol[j].equalsIgnoreCase("float")) donnees1[i][j]=new Float (0);
- if (ctrlcol[j].equalsIgnoreCase("double")) donnees1[i][j]=new Double (0);
- if (ctrlcol[j].equalsIgnoreCase("string")) donnees1[i][j]="";
- if (ctrlcol[j].equalsIgnoreCase("char")) donnees1[i][j]="";
- if (ctrlcol[j].equalsIgnoreCase("date"))
- {
- Date datejour=new Date();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
- donnees1[i][j]=formatter.format(datejour);
- }
- if (ctrlcol[j].equalsIgnoreCase("boolean")) donnees1[i][j]=vyes;
-
- }
- donnees=donnees1;
- fireTableDataChanged();
- lignes1 = new Ligne[this.getRowCount()];
- for (i = 0; i < lignes1.length; i++)
- {
- lignes1[i] = new Ligne();
- lignes1[i].index = i;
- }
- for(i=0;i<lignesup.length;i++)
- {
- lignesup1[i]=lignesup[i];
- }
- lignesup=lignesup1;
- lignes=lignes1;
- fireTableDataChanged();
- }
- public void suppligne(int lig) {
- JOptionPane d = new JOptionPane();
- int rep=d.showConfirmDialog( d.getParent(),"Supprimer une ligne","Voulez vous reelement supprimer cette ligne ?",JOptionPane.OK_CANCEL_OPTION );
- if (rep!=0) return;
-
- int i;
- donnees1=new Object[donnees.length-1][nomsColonnes.length];
- int j,h;j=0;h=0;
- while (lignesup[h][0]!=null)
- {h=h+1;}
- lignesup[h]=donnees[lig];
- for ( i=0;i<donnees.length;i++)
- {
- if (i!=lig) {donnees1[j]=donnees[i];j=j+1;}
- }
- donnees=donnees1;
- fireTableDataChanged();
- lignes1 = new Ligne[this.getRowCount()];
- for (i = 0; i < lignes1.length; i++)
- {
- lignes1[i] = new Ligne();
- lignes1[i].index = i;
- }
- lignes=lignes1;
- fireTableDataChanged();
- }
- public String[] getNomsColonnes() {
- return nomsColonnes;
- }
- }
-
Utilisation de la jtable :
Déclarer:
public TableModelPerso T;
public Tableur TAB;
Appel:
T=new TableModelPerso (
vect, // de type Object[][] contient les données
Colemploye, //de type String[] contient les entetes de col
false, // false si maj,true si sélection uniquement
vcoleditable, //de type Boolean[] les colonnes modifiables = true
ctrlcolemploye, //de type String[] classes des col int,long,double,float,string,date,boolean
vsize); // de type int[] taille des colonnes
TAB=new Tableur(T,1); // 0 si interdiction d'ajouter ou supprimer les lignes,1 sinon
TAB.affiche(this);
// le retour se fait via l'évents windowActivated de votre frame
// récupère les données via T.getDonnees() de type Object[][]
//récupère les lignes supp via T.getLignesup() de type Object[][]
copier ces deux classes
1
import javax.swing.*;
import javax.swing.table.TableModel;
import javax.swing.event.*;
import java.awt.Dimension;
import java.awt.event.*;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.AbstractTableModel;
import java.awt.Color;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
class Tableur extends JPanel implements TableModelListener
{
private Object[][] donnees;
private String[] nomsColonnes;
private JTable table;
private TableModel tableur;
private int[] vsize;
private javax.swing.JLabel jLabel1;
private javax.swing.JButton aj1,aj2;
private TableModelPerso tt;
private int ajoutsupp;
private int posilig;
Tableur(TableModelPerso vtablemodelperso,int vajoutsupp)
{
tt=vtablemodelperso;
ajoutsupp=vajoutsupp;
this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
table = new JTable(vtablemodelperso);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
table.setSelectionBackground(Color.BLUE);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int[] vsize=vtablemodelperso.getSizecol();
int tailletot=0;
for (int i=0;i<vsize.length;i++)
{
table.getColumnModel().getColumn(i).setPreferredWidth(vsize[i]);
if (vsize[i]==0) {table.getColumnModel().getColumn(i).setMinWidth(vsize[i]);table.getColumnModel().getColumn(i).setMaxWidth(vsize[i]);}
tailletot=tailletot+vsize[i];
}
vtablemodelperso.addEcouteur(table);
table.setPreferredScrollableViewportSize(new Dimension(tailletot+100, 300));
JScrollPane avecAsc = new JScrollPane(table);
jLabel1 = new javax.swing.JLabel();
jLabel1.setBackground(new java.awt.Color(255, 255, 51));
jLabel1.setText("Double clic sur une colonne pour trier la table");
jLabel1.setOpaque(true);
jLabel1.setName("TITRE");
jLabel1.setPreferredSize(new java.awt.Dimension(55, 20));
aj1 = new javax.swing.JButton();
aj1.setBackground(new java.awt.Color(255, 255, 51));
aj1.setText("Ajouter une ligne");
aj1.setPreferredSize(new java.awt.Dimension(150, 25));
aj2 = new javax.swing.JButton();
aj2.setBackground(new java.awt.Color(255, 255, 51));
aj2.setText("Supprimer une ligne");
aj2.setPreferredSize(new java.awt.Dimension(150, 25));
add(jLabel1);
add(avecAsc);
table.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
posilig=(table.rowAtPoint(evt.getPoint()));
}
});
if (!vtablemodelperso.isTypeselection() & ajoutsupp!=0){
add(aj1);
aj1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tt.addligne();
}});
add(aj2);
aj2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (tt.getDonnees().length==0)
{
JOptionPane d = new JOptionPane();
d.showMessageDialog( d.getParent(),"Plus de ligne!","Erreur!",JOptionPane.ERROR_MESSAGE);
return;
}
table.changeSelection(posilig,0,false,false);
for (int k=0;k<tt.getColumnCount();k++)
{
table.changeSelection(posilig,k,false,true);
}
tt.suppligne(posilig);
}});
}
}
public void tableChanged(TableModelEvent e)
{
}
public void affiche( JFrame j,String vtitre)
{
final JFrame v=j;
JFrame monCadre = new JFrame();
monCadre.setTitle(vtitre);
monCadre.setContentPane(this);
monCadre.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
v.show();
}
});
Insets insets = monCadre.getInsets();
monCadre.setSize(300 + insets.left + insets.right,125 + insets.top + insets.bottom);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
monCadre.setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
monCadre.pack();
monCadre.setVisible(true);
}
public Point getLocation() {
Point retValue;
retValue = super.getLocation();
System.out.println(retValue);
return retValue;
}
public String[] getNomsColonnes() {
return nomsColonnes;
}
}
2
import javax.swing.table.AbstractTableModel;
import javax.swing.AbstractCellEditor;
import javax.swing.table.TableCellEditor;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
import java.util.Date;
import java.text.SimpleDateFormat;
public class TableModelPerso extends AbstractTableModel
{
private Object[][] donnees,donnees1,lignesup,lignesup1,copydonnees;
private String[] nomsColonnes;
private boolean[] colmodifiable;
private boolean typeselection;
private String[] ctrlcol;
private int[] sizecol;
private Ligne[] lignes,lignes1;
private int colonneTri;
private Boolean vyes=new Boolean (true);
private Boolean vno=new Boolean (false);
private TableModelPerso model;
public TableModelPerso (Object[][] vdonnees, String[] vnomsColonnes,boolean vtypeselection,boolean[] vcolmodifiable,String vctrlcol[],int[] vsizecol) {
typeselection=vtypeselection;
ctrlcol=new String[vctrlcol.length];
sizecol=new int[vsizecol.length];
if (typeselection==true){
donnees=new Object[vdonnees.length][vnomsColonnes.length+1];
nomsColonnes=new String[vnomsColonnes.length+1];
nomsColonnes[vnomsColonnes.length]="Sélection";
colmodifiable=new boolean[vcolmodifiable.length+1];
colmodifiable[vcolmodifiable.length]=true;
int i;
for (i=0;i<donnees.length;i++)
{ donnees[i][vnomsColonnes.length]=vno; }
donnees[0][vnomsColonnes.length]=vyes;
}
else
{
lignesup=new Object[vdonnees.length][vnomsColonnes.length];
donnees=new Object[vdonnees.length][vnomsColonnes.length];
nomsColonnes=new String[vnomsColonnes.length];
colmodifiable=new boolean[vcolmodifiable.length];
}
int i,j;
for (i=0;i<vdonnees.length;i++)
{
for (j=0;j<vnomsColonnes.length;j++)
{donnees[i][j]=vdonnees[i][j];}
}
for (j=0;j<vnomsColonnes.length;j++)
{
nomsColonnes[j]=vnomsColonnes[j];
if (typeselection==true)
colmodifiable[j]=false;
else
colmodifiable[j]=vcolmodifiable[j];
}
for (j=0;j<vctrlcol.length;j++)
{ctrlcol[j]=vctrlcol[j];}
for (j=0;j<vsizecol.length;j++)
{sizecol[j]=vsizecol[j];}
model=this;
lignes = new Ligne[model.getRowCount()];
for (i = 0; i < lignes.length; i++) {
lignes[i] = new Ligne();
lignes[i].index = i;
}
}
public boolean isCellEditable(int row, int col) {
if (colmodifiable[col]==false)
return false;
else
return true;
}
public int getColumnCount() {
return nomsColonnes.length;
}
public Object getValueAt(int parm1, int parm2) {
return donnees[parm1][parm2];
}
public int getRowCount() {
return donnees.length;
}
public String getColumnName(int col){
return nomsColonnes[col];
}
public Object[][] getDonnees() {
return donnees;
}
public Object[][] getLignesup() {
return lignesup;
}
public void setValueAt(Object value, int row, int col) {
if (typeselection)
{
int i;
for(i=0;i<donnees.length;i++)
{
if ((donnees[i][nomsColonnes.length-1])==vyes)
donnees[i][nomsColonnes.length-1]=vno;
}
donnees[row][nomsColonnes.length-1]=vyes;
fireTableDataChanged();
}
else
{
// on peut ajouter d'autres ctrl depend de la façon dont vous gérer les nombres'
if (ctrlcol[col].equalsIgnoreCase("Date"))
{
try {java.sql.Date dd=java.sql.Date.valueOf((String) value);donnees[row][col]=value;fireTableDataChanged();}
catch (Exception e){
JOptionPane d = new JOptionPane();
d.showMessageDialog( d.getParent(),"Erreur de date","Attention !",JOptionPane.ERROR_MESSAGE);
}
}
else
{
if (value!=null)
{
if (value.getClass() != getColumnClass(col))
{
donnees[row][col]=null;
}
else
{
donnees[row][col]=value;}
}
fireTableDataChanged();
}
}
}
public void clear () {
for (int i = 0;i < nomsColonnes.length;i++)
donnees[i]=null;
fireTableDataChanged();
}
public Class getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}
public boolean isTypeselection() {
return typeselection;
}
public int[] getSizecol() {
return sizecol;
}
private class Ligne implements Comparable {
public int index;
public int compareTo(Object autre) {
Ligne autreLigne = (Ligne)autre;
Object cellule = model.getValueAt(index, colonneTri);
Object autreCellule = model.getValueAt(autreLigne.index, colonneTri);
return ((Comparable)cellule).compareTo(autreCellule );
}
}
public void addEcouteur(final JTable table) {
table.getTableHeader().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (event.getClickCount() < 2) return;
int tableColumn = table.columnAtPoint(event.getPoint());
int modelColumn = table.convertColumnIndexToModel(tableColumn);
sort(modelColumn);
}
});
}
public void sort(int c) {
colonneTri = c;
Arrays.sort(lignes);
copydonnees=new Object [donnees.length][nomsColonnes.length];
for (int j=0;j<lignes.length;j++){copydonnees[j]=donnees[lignes[j].index];}
for (int j=0;j<lignes.length;j++){donnees[j]=copydonnees[j];}
fireTableDataChanged();
}
public void addligne() {
int i;
donnees1=new Object[donnees.length+1][nomsColonnes.length];
lignesup1=new Object[lignesup.length+1][nomsColonnes.length];
for ( i=0;i<donnees.length;i++){donnees1[i]=donnees[i];}
for (int j=0;j<nomsColonnes.length;j++)
{ // dépend de la façon dont vous gérez les nombres (string ou non)
if (ctrlcol[j].equalsIgnoreCase("int")) donnees1[i][j]=new Integer(0);
if (ctrlcol[j].equalsIgnoreCase("long")) donnees1[i][j]=new Long (0);
if (ctrlcol[j].equalsIgnoreCase("float")) donnees1[i][j]=new Float (0);
if (ctrlcol[j].equalsIgnoreCase("double")) donnees1[i][j]=new Double (0);
if (ctrlcol[j].equalsIgnoreCase("string")) donnees1[i][j]="";
if (ctrlcol[j].equalsIgnoreCase("char")) donnees1[i][j]="";
if (ctrlcol[j].equalsIgnoreCase("date"))
{
Date datejour=new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
donnees1[i][j]=formatter.format(datejour);
}
if (ctrlcol[j].equalsIgnoreCase("boolean")) donnees1[i][j]=vyes;
}
donnees=donnees1;
fireTableDataChanged();
lignes1 = new Ligne[this.getRowCount()];
for (i = 0; i < lignes1.length; i++)
{
lignes1[i] = new Ligne();
lignes1[i].index = i;
}
for(i=0;i<lignesup.length;i++)
{
lignesup1[i]=lignesup[i];
}
lignesup=lignesup1;
lignes=lignes1;
fireTableDataChanged();
}
public void suppligne(int lig) {
JOptionPane d = new JOptionPane();
int rep=d.showConfirmDialog( d.getParent(),"Supprimer une ligne","Voulez vous reelement supprimer cette ligne ?",JOptionPane.OK_CANCEL_OPTION );
if (rep!=0) return;
int i;
donnees1=new Object[donnees.length-1][nomsColonnes.length];
int j,h;j=0;h=0;
while (lignesup[h][0]!=null)
{h=h+1;}
lignesup[h]=donnees[lig];
for ( i=0;i<donnees.length;i++)
{
if (i!=lig) {donnees1[j]=donnees[i];j=j+1;}
}
donnees=donnees1;
fireTableDataChanged();
lignes1 = new Ligne[this.getRowCount()];
for (i = 0; i < lignes1.length; i++)
{
lignes1[i] = new Ligne();
lignes1[i].index = i;
}
lignes=lignes1;
fireTableDataChanged();
}
public String[] getNomsColonnes() {
return nomsColonnes;
}
}
Conclusion
Merci pour vos commentaires, remerciements aux autres codes sur les jtables
Historique
- 29 janvier 2007 15:43:44 :
- correction des variables à déclarer prog princip
- 29 janvier 2007 16:01:22 :
- mots clés
- 29 janvier 2007 23:01:14 :
- amélioration
- 29 janvier 2007 23:52:59 :
- Amélioration sizecol à zéro
- 05 février 2007 19:31:34 :
- Récupération des lignes supp, possibilité d'interdire l'ajout ou la suppression de lignes
- 05 février 2007 19:33:36 :
- Amélioration
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | 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 | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|