Colonne au format date

TIEMYAC - 17 oct. 2017 à 14:02 - Dernière réponse :  TIEMYAC
- 23 oct. 2017 à 10:49
Bonjour,
j'ai un problème que je n'arrive pas à resoudre. au fait j'ai un tableau JTable dont je voudrai rendre certaines colonnes au format date et d'autre au format heure. mais depuis je tâtonne mais j'y arrive et je vroudrai demande votre aide .
merci d'avance
Afficher la suite 

6 réponses

Répondre au sujet
KX 15159 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 janvier 2018 Dernière intervention - 18 oct. 2017 à 23:06
0
Utile
Bonjour,

Tu peux regarder cette discussion, tu y trouveras un exemple de code avec un TableCellRenderer pour l'affichage des dates dans ta JTable.
Commenter la réponse de KX
0
Utile
3
merci ce problème est résolut mais une fois que je clic enter sur ma cellule et je relâche tout disparaît, je comprend pas vraiment.
KX 15159 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 janvier 2018 Dernière intervention - 19 oct. 2017 à 17:49
Il faudrait voir ton code pour qu'on puisse reproduire le bug.
TIEMYAC > KX 15159 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 janvier 2018 Dernière intervention - 19 oct. 2017 à 19:15
voici mon code que tu m'avait aidé quelque part dans ce forum:
 


public class Source implements Serializable{
private static final long serialVersionUID = 1L;

private Sites sites;
private Nombre kom;
private java.util.Date cot ;
private java.util.Date hor;
private java.util.Date sp;
private java.util.Date tt;


public Source(Sites sites, Nombre kom,java.util.Date cot, java.util.Date hor, java.util.Date sp , java.util.Date tt) {
super();

this.sites = sites;
this.kom = kom;
this.cot = cot;
this.hor = hor;
this.sp = sp;

this.tt = tt;
}

public Sites getNir() {
return sites;
}

public void setNir(Sites sites) {
this.sites = sites;
}

public Nombre getKom() {
return kom;
}

public void setKom(Nombre kom) {
this.kom = kom;
}

public java.util.Date getCot() {
return cot;
}

public void setCot(java.util.Date date) {
this.cot = date;
}

public java.util.Date getHor() {
return hor;
}

public void setHor(java.util.Date date) {
this.hor = date;
}

public java.util.Date getSp() {
return sp;
}

public void setSp(java.util.Date date) {
this.sp = date;
}



public java.util.Date getTt() {
return tt;
}

public void setTt(java.util.Date date) {
this.tt = date;
}
}
KX 15159 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 janvier 2018 Dernière intervention > TIEMYAC - 19 oct. 2017 à 19:26
Il faudrait le code complet pour tester, mais ce n'est clairement pas le bean que tu viens de poster qui va poser problème, si c'est un problème d'affichage il faut regarder le code de l'affichage...
Commenter la réponse de TIEMYAC
0
Utile
toute mes excuse KX pour ce retard, on avait un problème de réseau par ici.
mon problème est toujours là alors je te file le modèle et la fenêtre d'affichage :
   
@SuppressWarnings(value = { "serial", "deprecation" })
public class Model extends AbstractTableModel {
private final List<Source> sources ;
private static final File datasFile = new File("data.ser").getAbsoluteFile();

private final String[] entetes = {" Sites","NOMBRE", "JOUR ET HEURE","JOUR ET HEURE ","JOUR ET HEURE ","TEMPS MIS"};

private static void saveToFile(List<Source> datas) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(datasFile))) {
oos.writeObject(datas);
System.out.println("Enregistrer dans = " + datasFile);
} catch (Exception e) {
e.printStackTrace();
}
}

private static List<Source> loadFromFile() {
List<Source> datas;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(datasFile))) {
datas = (List<Source>) ois.readObject();
System.out.println("lu dans = " + datasFile);
} catch (Exception e) {
e.printStackTrace();
datas = new ArrayList<>();
datas.add(new Source(Sites.Choisissez, Nombre.ZERO , new Date( ), new Date( ) , new Date( ), new Date( )));

} return datas;

}

public Model() {
super();
sources = loadFromFile();
}


public int getRowCount() {
return sources.size();
}

public int getColumnCount() {
return entetes.length;
}

public String getColumnName(int columnIndex) {
return entetes[columnIndex];
}



public Object getValueAt(int rowIndex, int columnIndex) {

switch(columnIndex){
case 0:
return sources.get(rowIndex).getNir();
case 1:
return sources.get(rowIndex).getKom();
case 2:
return sources.get(rowIndex).getCot();
case 3:

return sources.get(rowIndex).getHor();
case 4:
return sources.get(rowIndex).getSp();

case 5:
return sources.get(rowIndex).getTt();
default:
return null;}
}



public Class getColumnClass(int columnIndex){
switch(columnIndex){
case 0:
return Sites.class;
case 1:
return Nombre.class;
case 2:
return Date.class;
case 3:
return Date.class;
case 4 :
return Date.class;
case 5 :
return Date.class;
default:
return String.class;
} }

public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}


public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

if(aValue != null){
Source source = sources.get(rowIndex);
switch(columnIndex){
case 0:
source.setNir((Sites)aValue);
break;
case 1:
source.setKom((Nombre)aValue);
break;
case 2:
source.setCot( Date( aValue));
break;
case 3:
source.setHor( Date( aValue));
break;
case 4:
source.setSp( Date( aValue));
break;
}} saveToFile(sources);}



private Date Date(Object aValue) {
DateFormat date ;
return null;}


public void addSource(Source source) {
sources.add(source);
fireTableRowsInserted(sources.size() -1, sources.size() -1);
saveToFile(sources); }


public void removeSource(int rowIndex) {
sources.remove(rowIndex);
fireTableRowsDeleted(rowIndex, rowIndex);
saveToFile(sources);}

}


ensuite ma fenetre:
 public class Fenetre extends JFrame  {
private Model modele = new Model();
private JTable tableau;
private JTextArea text;
public Fenetre() {
super();

this.setTitle("COORDINATION ");
this.setSize(1500, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("cdc.jpg");
this.setIconImage(image.getImage());



// GESTION DES CELLULES
tableau = new JTable(modele);

tableau.setDefaultEditor(Sites.class, new SitesCellEditor());
tableau.setDefaultRenderer(Sites.class, new SitesCellRenderer());
tableau.setDefaultEditor(Nombre.class, new NombreCellEditor());
tableau.setDefaultRenderer(Nombre.class, new KomCellRenderer());
tableau.setDefaultRenderer(Date.class, new DateCellRenderer());
// par defaut tout ce qui est dans le tableau s'affiche rouge
tableau.setForeground(Color.red);
tableau.setBackground(Color.pink);
// GESTION DES TITRES
// - fond des titres
tableau.getTableHeader().setBackground(Color.GREEN);
// - couleur caractere des titres
tableau.getTableHeader().setForeground(Color.BLACK);
//rouler les colonnes
tableau.setAutoCreateRowSorter(true);
// colonnes non deplacable
tableau.getTableHeader().setReorderingAllowed(false);

getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
JPanel boutons = new JPanel();

boutons.add(new JButton(new AddAction()));
boutons.add(new JButton(new RemoveAction()));

getContentPane().add(boutons, BorderLayout.SOUTH);
}
public static void main(String[] args) {
Fenetre fen = new Fenetre();
fen.setVisible(true);

}

private class AddAction extends AbstractAction {
private AddAction() {
super(" Ajouter ");
}

public void actionPerformed(ActionEvent e) {

modele.addSource(new Source(Sites.Choisissez, Nombre.ZERO , new Date(), new Date ( ),new Date ( ) ,new Date ( )));
}
}

private class RemoveAction extends AbstractAction {
private RemoveAction() {
super("Supprimmer");
}

public void actionPerformed(ActionEvent e) {
int[] selection = tableau.getSelectedRows();
for(int i = selection.length - 1; i >= 0; i--){

JOptionPane jop = new JOptionPane();
int option1 = jop.showConfirmDialog(null, "VOULEZ-VOUS CONFIRMER LA SUPPRESSION ?", "ATTENTION",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);{


if(option1 == JOptionPane.OK_OPTION){

modele.removeSource(selection[i]);
}
} }
}
} }


Commenter la réponse de TIEMYAC

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.