kokojavafr
Messages postés23Date d'inscriptionmercredi 27 juillet 2005StatutMembreDernière intervention12 septembre 2005
-
27 juil. 2005 à 11:22
jpbodiong
Messages postés4Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention27 juin 2009
-
5 août 2007 à 18:25
Bonjour,
voila, je suis en train de développer dans le cadre de mes études un programme de gestion de généalogie.
Afin d'afficher les individus enregistrés dans le programme, je créé une JTable que je remplis
Cependant, jai des problèmes.
Je m'explique.
Quand je créé ma JTable, je ne veux pas que l'on puisse modifier le
texte des cellules (cela se fait par une autre fenêtre de mon ihm),
mais je veux tout de meme pouvoir les selectionner, afin, en cas de
double click sur une cellule, afficher la fenêtre de cette personne.
Mes problèmes sont donc que je n'arrive pas à trouver comment faire ca
(ie : afficher les cellules, interdire la modification, pouvoir les
selectionner et faire une action sur un double click).
Je pourrais autrement rajouter à la fin de mon tableau, sur la droite,
des boutons permettant d'accéder à la fiche de cette personne. Le
problème étant que la récupération des données est dynamique, et je ne
vois pas comment creer des fonctions du genre
btnXCliqued en série en dynamique, au sein d'un while ... Cela voudrait
donc dire creer des boutons à la volée, et les fonctions qui vont avec,
que je devrais implémenter..
J'avais commencé à faire comme ceci, mais il faudrais que je puisse
passer les informations sur l'id de la personne sélectionnée ..
for (int i = 0; i < TableauDescendance.getRowCount() - 1; i++)
mouzart
Messages postés161Date d'inscriptionmardi 26 avril 2005StatutMembreDernière intervention 6 novembre 20084 27 juil. 2005 à 13:47
salut,
je pense que dans ton cas tu dois utiliser les modeles, il faut definire ton modele qui va heriter de AbstractTableModel ainsi tu peut personnaliser ton jtable:
je te donne un exmple de modele dans ce qui suit:
package interfac;
import javax.swing.table.*;
import java.util.*;
public class Tmodel extends AbstractTableModel
{
String[] columnNames = null ;
Object[][] data = null ;
public Tmodel(Vector v, int c,String[] header)
{
data = new Object[v.size()][c] ;
columnNames = header ;
}
public int getColumnCount()
{
return columnNames.length;
}
public Object getValueAt(int l, int c)
{
return data[l][c] ;
}
/**
* Stocker une valeur dans la table
* */
public void setValueAt(Object val ,int l, int c)
{
data[l][c] = val;
}
/**
* Obtenir le nombre de lignes
* */
public int getRowCount()
{
return data.length ;
}
/**
* Obtenir le nom d'une colonne
* */
public String getColumnName(int c)
{
return columnNames[c] ;
}
/**
* Obtenir le type de donnée d'une colonnes
* */
public Class getColumnClass(int c)
{
try
{
return getValueAt(0,c).getClass();
}
catch (Exception ex)
{
return "".getClass() ;
}
}
/* *
* Est ce que la colonne est modifiable ?
* */
public boolean isCellEditable(int r, int c)
{
return true ;
}
}
public void RemoveLigne(){
Data.remove(Data.size()-1);
MiseAjour();
}
//mise a jour de la table
public void MiseAjour(){
TablePerso = new Tmodel(Data,6,colh);
jTable1= new JTable(TablePerso);
jScrollPane1.getViewport().add(jTable1, null);
if(Data.size()>1){
for (int i = 0; i < Data.size(); i++) {
String[] T = (String[]) Data.elementAt(i);
for (int j = 0; i < 6; i++) {
TablePerso.setValueAt(T[j], i, j);
}
}
}
TableColumn column1=jTable1.getColumnModel().getColumn(1);
TableColumn column2=jTable1.getColumnModel().getColumn(3);
column1.setCellRenderer(new DefaultTableCellRenderer());
column1.setCellEditor(new DefaultCellEditor(combo));
column2.setCellRenderer(new DefaultTableCellRenderer());
column2.setCellEditor(new DefaultCellEditor(combo));
}
// public void
public void AddLigne(){
String[] Tab=new String[6];
if(Data.size()>=1){
for (int i = 0; i < 6; i++) {
Tab[i] = (String) TablePerso.getValueAt(Data.size() - 1, 1);
}
Data.remove(Data.size()-1);
Data.addElement(Tab);
}
Data.addElement(null);
MiseAjour();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==this.jButton2){
RemoveLigne();
}
if(e.getSource()==this.jButton1){
AddLigne();
}
c'est vrai que ca va repond pas completement a tes questions mais ca va t'aider et c'est la bonne facon de proceder.
jpbodiong
Messages postés4Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention27 juin 2009 5 août 2007 à 18:25
JP~Bodiong
akm
Salut je developpe une application de gestion de Stock sous netBeans 5.5. j'ai un problème avec ma JTable contenu dans un ScrollPane qui est dans une JInternalFrame.le resultat des requêtes select s'affiche bien dans ma table lorsque j'execute le programme avec NetBeans. Mais lorsque je cree un jar executable avec l'ide aucun resultat de commande select ne s'affiche plus dans ma table???? Le même code donne un resultat different lorsqu'on le rend executable... comment es ce possible.
Besoin d'aide s'il faut rafraichir Comment faire§§§
Merci d'avance. Toute aide serait la bienvenue