Jtable java

achzouba Messages postés 13 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 7 avril 2016 - 23 juil. 2013 à 11:15
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 26 juil. 2013 à 17:48
Bonjour a tous,

j'ai un tableau en java contient 4 colonne: designation, quantite, prix.u, montant
je veux que le champ montant sera calculer automatiquement quand je cliq sur la ligne


merci d'avance

bonne journée

6 réponses

achzouba Messages postés 13 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 7 avril 2016
23 juil. 2013 à 11:21
comment ajouter un écouteur d'événement pour l'utilisateur sélectionne une ligne de la JTable
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
23 juil. 2013 à 11:43
Salut,

Quel est ton problème, tu as essayé de faire quelque chose ? Tu as cherché sur internet ?
0
achzouba Messages postés 13 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 7 avril 2016
23 juil. 2013 à 11:55
oui j'ai chercher j'ai pas trouvé beaucoup de choses

je veux que le champ 'montant' sera calculé automatiqement quand je remplie les 2 champs 'quantite et prix.u'

sans clique sur un bouton ..

merci
0
achzouba Messages postés 13 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 7 avril 2016
23 juil. 2013 à 12:53
je veux que lorsque l'utilisateur modifie la quantite(int) ou le prix(double) => le montant se calcule au fur et au mesure que l'utilisateur saisi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 juil. 2013 à 13:40
Bonjour,

Tu peux installer un listener sur le model de ton JTable, comme ça tu peux mettre à jour les données.

[code=java]
final static int DESIGNATION_INDEX = 0;
final static int QUANTITE_INDEX = 1;
final static int PRIX_UNITAIRE_INDEX = 2;
final static int MONTANT_INDEX = 3;

JTable table = ...;
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int column = e.getColumn();
int row = e.getFirstRow();

if (e.getType() TableModelEvent.UPDATE && (column QUANTITE_INDEX || column == PRIX_UNITAIRE_INDEX)) {
TableModel model = (TableModel) e.getSource();
double quantite = model.getValueAt(row, QUANTITE_INDEX);
double prixUnitaire = model.getValueAt(row, PRIX_UNITAIRE_INDEX);
double montant = quantite * prixUnitaire;
model.setValueAt(montant, row, MONTANT_INDEX);
}
}
});
/code
0
achzouba Messages postés 13 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 7 avril 2016
25 juil. 2013 à 14:04
Salut

merci beaucoup Ombitious_Developper pour ton code,

quand j'ecrit cette instruction un message d'erreur est affiché et aucune mises a jour n'est faite
model.setValueAt(quantite * prixUnitaire, row, MONTANT_INDEX);

mais quand j'ecrit model.setValueAt(quantite , row, MONTANT_INDEX) ou bien
model.setValueAt('un nombre fix' * prixUnitaire, row, MONTANT_INDEX); la mises ajour est fait

je ne sais pas ou est le probleme

help please
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 juil. 2013 à 17:47
Bonjour,

Ceci devrait marché !

public class StockModel extends DefaultTableModel {

	private final static int DESIGNATION_INDEX = 0;
	private final static int QUANTITE_INDEX = 1;
	private final static int PRIX_UNITAIRE_INDEX = 2;
	private final static int MONTANT_INDEX = 3;

	private static final Class<?>[] columnTypes = { String.class, Double.class,
			Double.class, Double.class };

	private static final String[] headers = { "Désignation", "Quantité",
			"Prix Unitaire", "Montant" };

	public StockModel() {
		this(new Object[0][0]);
	}

	public StockModel(Object[][] data) {
		super(data, headers);
		
		addTableModelListener(new TableModelListener() {
			public void tableChanged(TableModelEvent e) {
				int column = e.getColumn();
				int row = e.getFirstRow();

				if (e.getType() == TableModelEvent.UPDATE && (column == QUANTITE_INDEX || column == PRIX_UNITAIRE_INDEX)) {
					TableModel model = (TableModel) e.getSource();
					
					double quantite = ((Number) model.getValueAt(row, QUANTITE_INDEX)).doubleValue();
					double prixUnitaire = ((Number) model.getValueAt(row, PRIX_UNITAIRE_INDEX)).doubleValue();
					double montant = quantite * prixUnitaire;
					
					model.setValueAt(montant, row, MONTANT_INDEX);
				}
			}
		});
	}
	
	public Class<?> getColumnClass(int columnIndex) {
		return columnTypes[columnIndex];
	}
}


Une classe de Test:

public class Application extends JFrame {

	public Application() {
		setTitle("Stock");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(600, 400);
		
		Object[][] data = {
				{"Lait", 1, 1.5, 1.5},
				{"Café", 1, 4, 4},
				{"Chocolat", 1, 2, 2}
		};
		
		JTable table = new JTable(new StockModel(data));
		getContentPane().add(new JScrollPane(table));
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Application application = new Application();
		application.setVisible(true);
	}
}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 juil. 2013 à 17:48
Lorsque tu modifies les valeurs des champs Quantité ou Prix Unitaire le montant change !
0
Rejoignez-nous