le probleme c'est que je n'arriver pas calcalez le nombre de jour et stocker ca dans la cellule et ensuite trie le tableaux
on java
c'est le code
/*
* Created on 23 févr. 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package creeTableaux;
/**
* @author Sehmimi Mohamed-Hich
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.awt.*;
import creeTableaux.*;
import java.awt.event.*;
import java.util.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class ExpenseReport extends JFrame {
protected JTable m_table;
protected ExpenseReportData m_data;
protected JLabel m_title;
public ExpenseReport() {
super("Double A");
setSize(570, 200);
m_data = new ExpenseReportData(this);
m_table = new JTable();
m_table.setAutoCreateColumnsFromModel(false);
m_table.setModel(m_data);
m_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
for (int k = 0; k < ExpenseReportData.m_columns.length; k++) {
TableCellRenderer renderer;
if (k == ExpenseReportData.COL_APPROVED)
renderer = new CheckCellRenderer();
else {
DefaultTableCellRenderer textRenderer =
new DefaultTableCellRenderer();
textRenderer.setHorizontalAlignment(
ExpenseReportData.m_columns[k].m_alignment);
renderer = textRenderer;
}
TableCellEditor editor;
if (k == ExpenseReportData.COL_SEX)
editor =
new DefaultCellEditor(
new JComboBox(ExpenseReportData.SEX));
else if (k == ExpenseReportData.COL_LABLE)
editor =
new DefaultCellEditor(
new JComboBox(ExpenseReportData.LABLE));
else if (k == ExpenseReportData.COL_FONCTION)
editor =
new DefaultCellEditor(
new JComboBox(ExpenseReportData.FONCTION));
else
editor = new DefaultCellEditor(new JTextField());
TableColumn column =
new TableColumn(
k,
ExpenseReportData.m_columns[k].m_width,
renderer,
editor);
m_table.addColumn(column);
}
JTableHeader header = m_table.getTableHeader();
header.setUpdateTableInRealTime(false);
JScrollPane ps = new JScrollPane();
ps.setSize(550, 150);
ps.getViewport().add(m_table);
getContentPane().add(ps, BorderLayout.CENTER);
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
m_title = new JLabel("Total: $", null, JButton.LEFT);
m_title.setForeground(Color.black);
m_title.setAlignmentY(0.5f);
p.add(m_title);
p.add(Box.createHorizontalGlue());
JButton bt = new JButton("Insert before");
bt.setMnemonic('b');
bt.setAlignmentY(0.5f);
ActionListener lst = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = m_table.getSelectedRow();
m_data.insert(row);
m_table.tableChanged(
new TableModelEvent(
m_data,
row,
row,
TableModelEvent.ALL_COLUMNS,
TableModelEvent.INSERT));
m_table.repaint();
}
};
bt.addActionListener(lst);
p.add(bt);
bt = new JButton("Insert after");
bt.setMnemonic('a');
bt.setAlignmentY(0.5f);
lst = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i = 0;
int row = m_table.getSelectedRow();
m_data.insert(row + 1);
m_table.tableChanged(
new TableModelEvent(
m_data,
row + 1,
row + 1,
TableModelEvent.ALL_COLUMNS,
TableModelEvent.INSERT));
m_table.repaint();
}
};
bt.addActionListener(lst);
p.add(bt);
bt = new JButton("Graphe");
bt.setMnemonic('g');
bt.setAlignmentY(0.5f);
lst = new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
};
bt.addActionListener(lst);
p.add(bt);
bt = new JButton("Delete row");
bt.setMnemonic('d');
bt.setAlignmentY(0.5f);
lst = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = m_table.getSelectedRow();
if (m_data.delete(row)) {
m_table.tableChanged(
new TableModelEvent(
m_data,
row,
row,
TableModelEvent.ALL_COLUMNS,
TableModelEvent.INSERT));
m_table.repaint();
calcTotal();
}
}
};
bt.addActionListener(lst);
p.add(bt);
getContentPane().add(p, BorderLayout.PAGE_END);
calcTotal();
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser);
setVisible(true);
}
public void calcTotal() {
double total = 0;
for (int k = 0; k < m_data.getRowCount(); k++) {
Date date = (Date) m_data.getValueAt(k,ExpenseReportData.COL_DATE);
Date date_fin = (Date) m_data.getValueAt(k,ExpenseReportData.COL_DATE_FIN);
//total = (date.getDay() - date_fin.getDate());
total = (2-1);
};
//je veux la diference soit stockes dans cette ligne
m_title.setText("Total: $" + total);
}
public static void main(String argv[]) {
new ExpenseReport();
}
}
class CheckCellRenderer extends JCheckBox implements TableCellRenderer {
protected static Border m_noFocusBorder;
public CheckCellRenderer() {
super();
m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setOpaque(true);
setBorder(m_noFocusBorder);
}
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
if (value instanceof Boolean) {
Boolean b = (Boolean) value;
setSelected(b.booleanValue());
}
setBackground(
isSelected
&& !hasFocus
? table.getSelectionBackground()
: table.getBackground());
setForeground(
isSelected
&& !hasFocus
? table.getSelectionForeground()
: table.getForeground());
setFont(table.getFont());
setBorder(
hasFocus
? UIManager.getBorder("Table.focusCellHighlightBorder")
: m_noFocusBorder);
return this;
}
}
class ExpenseData {
class ColumnData {
public String m_title;
int m_width;
int m_alignment;
/* original ////public ColumnData(String title, int width, int alignment) {
m_title = ( title;
m_width = width;
m_alignment = alignment;*/
public ColumnData(JButton title, int width, int alignment) {
JButton m_title = new JButton();
m_title = (JButton) title;
m_width = width;
m_alignment = alignment;
}
}
public String m_nom;
public String m_prenom;
public Double m_age;
public Integer m_sex;
public Integer m_lable;
public Integer m_fonction;
public Date m_date_fin;
public Date m_date;
public Double m_jour;
public ExpenseData() {
m_nom = "";
m_prenom = "";
m_sex = new Integer(0);
m_lable = new Integer(0);
m_fonction = new Integer(0);
m_date = new Date();
m_date_fin = new Date();
}
public ExpenseData(
String nom,
String prenom,
double age,
int sex,
int lable,
int fonction,
Date date,
Date date_fin,
double jour
) {
m_nom = nom;
m_prenom = prenom;
m_age = new Double(age);
m_sex = new Integer(sex);
m_lable = new Integer(lable);
m_fonction = new Integer(fonction);
m_date = date;
m_date_fin = date;
m_jour = new Double(jour);
}
}
class ColumnData {
public String m_title;
int m_width;
int m_alignment;
public ColumnData(String title, int width, int alignment) {
m_title = new String(title);
m_width = width;
m_alignment = alignment;
}
/**
* @param string
* @param i
* @param j
*/
}
class ExpenseReportData extends AbstractTableModel {
public static final ColumnData m_columns[] =
{
new ColumnData("Nom", 80, JLabel.LEFT),
new ColumnData("Prenom", 80, JLabel.LEFT),
new ColumnData("Age", 80, JLabel.LEFT),
new ColumnData("Sex", 80, JLabel.LEFT),
new ColumnData("Lable", 80, JLabel.LEFT),
new ColumnData("Fonction", 80, JLabel.LEFT),
new ColumnData("Date", 80, JLabel.LEFT),
new ColumnData("Date_fin", 80, JLabel.LEFT),
new ColumnData("Nombre Jour", 80, JLabel.LEFT)};
public static final int COL_NOM = 0;
public static final int COL_PRENOM = 1;
public static final int COL_AGE = 2;
public static final int COL_SEX = 3;
public static final int COL_LABLE = 4;
public static final int COL_FONCTION = 5;
public static final int COL_DATE = 6;
public static final int COL_DATE_FIN = 7;
public static final int COL_NOMBRE_JOUR = 8;
public static final int COL_AMOUNT = 9;
public static final int COL_APPROVED =10 ;
public static final String[] SEX = { "Male", "Femme" };
public static final String[] LABLE =
{ "lable1", "lable2", "lable3", "lable4" };
public static final String[] FONCTION =
{ "fonction1", "fonction2", "fonction3", "fontion4" };
protected ExpenseReport m_parent;
protected SimpleDateFormat m_frm;
protected Vector m_vector;
public ExpenseReportData(ExpenseReport parent) {
m_parent = parent;
m_frm = new SimpleDateFormat("dd/MM/yy");
m_vector = new Vector();
setDefaultData();
}
public void setDefaultData() {
}
public int getRowCount() {
return m_vector == null ? 0 : m_vector.size();
}
public int getColumnCount() {
return m_columns.length;
}
/*public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 1) {
return false;
} else {
return true;
}
}*/
public String getColumnName(int column) {
return m_columns[column].m_title;
}
public boolean isCellEditable(int nRow, int nCol) {
return true;
}
public Object getValueAt(int nRow, int nCol) {
if (nRow < 0 || nRow >= getRowCount())
return "";
ExpenseData row = (ExpenseData) m_vector.elementAt(nRow);
switch (nCol) {
case COL_DATE :
return m_frm.format(row.m_date);
case COL_DATE_FIN :
return m_frm.format(row.m_date_fin);
case COL_NOMBRE_JOUR :
return row.m_jour;
case COL_NOM :
return row.m_nom;
case COL_PRENOM :
return row.m_prenom;
case COL_AGE :
return row.m_age;
case COL_SEX :
return SEX[row.m_sex.intValue()];
case COL_LABLE :
return LABLE[row.m_lable.intValue()];
case COL_FONCTION :
return FONCTION[row.m_fonction.intValue()];
}
return "";
}
public void setValueAt(Object value, int nRow, int nCol) {
if (nRow < 0 || nRow >= getRowCount())
return;
ExpenseData row = (ExpenseData) m_vector.elementAt(nRow);
String svalue = value.toString();
switch (nCol) {
case COL_DATE :
Date date = null;
try {
date = m_frm.parse(svalue);
} catch (java.text.ParseException ex) {
date = null;
}
if (date == null) {
JOptionPane.showMessageDialog(
null,
svalue + " is not a valid date",
"Warning",
JOptionPane.WARNING_MESSAGE);
return;
}
row.m_date = date;
break;
case COL_DATE_FIN :
Date date_fin = null;
try {
date_fin = m_frm.parse(svalue);
} catch (java.text.ParseException ex) {
date = null;
}
if (date_fin == null) {
JOptionPane.showMessageDialog(
null,
svalue + " is not a valid date",
"Warning",
JOptionPane.WARNING_MESSAGE);
return;
}
row.m_date = date_fin;
break;
case COL_NOMBRE_JOUR :
try {
row.m_jour = new Double(svalue);
} catch (NumberFormatException e) {
break;
}
break;
case COL_AGE :
try {
row.m_age = new Double(svalue);
} catch (NumberFormatException e) {
break;
}
break;
case COL_SEX :
for (int k = 0; k < SEX.length; k++)
if (svalue.equals(SEX[k])) {
row.m_sex = new Integer(k);
break;
}
break;
case COL_LABLE :
for (int k = 0; k < LABLE.length; k++)
if (svalue.equals(LABLE[k])) {
row.m_lable = new Integer(k);
break;
}
break;
case COL_FONCTION :
for (int k = 0; k < FONCTION.length; k++)
if (svalue.equals(FONCTION[k])) {
row.m_fonction = new Integer(k);
break;
}
break;
case COL_NOM :
row.m_nom = svalue;
break;
case COL_PRENOM :
row.m_prenom = svalue;
break;
}
}
public void insert(int row) {
if (row < 0)
row = 0;
if (row > m_vector.size())
row = m_vector.size();
m_vector.insertElementAt(new ExpenseData(), row);
}
public boolean delete(int row) {
if (row < 0 || row >= m_vector.size())
return false;
m_vector.remove(row);
return true;
}
}
momo