begin process at 2012 02 14 13:40:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Divers

 > 

date dans jtable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

date dans jtable

mardi 24 février 2004 à 11:12:53 | date dans jtable

zarziszita

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
mardi 24 février 2004 à 14:02:09 | Re : date dans jtable

kirua12


Salut,

les valeurs dans la table sont de type String donc tu ne peux pas les caster en Date. Tu dois créer un objet Date à partir de la représentation en chaine de caractères de la date. Rapidement voici une solution (c'est un peu lourd je trouve mais j'ai pas cherché si il y avait quelque chose de plus simple) :
public void calcTotal() {

int total = 0;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
for (int k = 0; k < m_data.getRowCount(); k++) {
try {
Calendar dateDebut = new GregorianCalendar();
dateDebut.setTime(format.parse((String) m_data.getValueAt(k, ExpenseReportData.COL_DATE)));
Calendar date_fin = new GregorianCalendar();
date_fin.setTime(format.parse((String) m_data.getValueAt(k, ExpenseReportData.COL_DATE_FIN)));

Date totalDate = new Date(date_fin.getTime().getTime() - dateDebut.getTime().getTime());
Calendar date = new GregorianCalendar();
date.setTime(totalDate);
total += date.get(Calendar.DATE) - 1;
} catch (ParseException e) {
System.out.println(e.getMessage());
}

}
//je veux la diference soit stockes dans cette ligne
m_title.setText("Total: $" + total);

}

Il faut utiliser un SimpleDateFormat pour parser ta chaine de caractères et la transformer en Date. Après on crée un calendar qui va représenter la différence en temps entre les 2 dates. Enfin on récupère la valeur. Il y a un -1 après le get(Calendar.DATE) car on veut la différence de jours et non la date. Si il y a 4 jours d'écart la date sera le 5 janvier 1970. Donc 5-1=4 :) .
A noter que ce que j'ai écris ne marche que pour un nombre de jours < 31 (en fait le nombre de jour dans le mois de janvier). A toi d'adapter ...

Pour le reste j'ai pas trop compris ton problème.


Cette discussion est classée dans : date, case, col, return, row


Répondre à ce message

Sujets en rapport avec ce message

Conversion en java d'une macro sous access [ par aurel_scuderia ] Bonjour, je dois transformer en code java la macro suivante qui a ete faite sous access en gros cette macro calcule une date nommee duedate a partir pb avec 'if ( (row>>1)<<1 == row )' [ par kobee12 ] Salut a tous.J'ai une fonction isCellEditable pour l'edition des tables :DefaultTableModel df = new DefaultTableModel() { public bool Class Date - - débutant !! [ par juancho2786 ] Bonsoir, je suis debutant et j'airamerais savoir si la class Date est bien faite ( peut etre rajouter des commentaires) et s'il faut rajouter encore d Augmenter une date de 4 jours (sans calendar) [ par daviddubois ] Bonjour tout le monde,J'ai une méthode main qui envoie trois informations (jour, mois, année) à une classe que j'ai créé.Cette clasee me renvoit simpl JNI + Eclipse [ par kcin ] Bonjour à tous.J'essaye depuis quelques jours d'apprendre le JAVA à l'aide d'un bouquin que je trouvé. Or j'ai un petit soucis lors de l'éxécution d'u convertir un programme c en java [ par denzelboy ] Bonjour dans le cadre de mon projet de fin d'étude que je dois en java. J'ai un header (matrix_2d.h) que je souhaite convertir en java. Mais je me tro un jTable avec une colonne jCheckBox [ par roura22 ] Salut, Je suis en train de developper une application java avec NetBeans et la bibliothèque Swing. j'ai besoin d'une jTable qui soit rempli à partir d remplir un Jtable a partir d'un tableau [ par coach872 ] salut, j'ai un tableau que j'ai crée a partir d'un fichier csv je veut maintenant l'inserer dans un Jtable voici mon code de lecture d'un fichier csv Pb avec une JTable et getSelctedRow() [ par gyome314 ] Salut les jeunes !Voila mon pb...Dans une interface graphique, je cherche éditer une liste de fichiers sous la forme d'une JTable avec une seule colon JTable : afficher une Date [ par isako ] Bonjour,Ce sujet n'est pas nouveau dans le forum, mais je n'ai pas trouvé la solution... Je vous soumets mon problème en espérant que l'un de vous pou


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales