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]);
}
} }
}
} }