Depuis le temps que j'en parlais !
Voici donc ma property table : il s'agit d'une JTable avec des fonctionnalités supplémentaires afin de faciliter son utilisation pour en faire une table de propriété : une table à 2 colonnes, une colonne pour du texte statique, et une colonne pour éditer les valeurs.
Le plus simple reste de regarder la capture d'écran pour comprendre ce que je veux dire.
Au menu des cellEditor disponibles pour l'instant :
String
Integer
Double
FileName
Boolean
Date
Hour
Color
Enum (combo pour que l'utilisateur sélectionne une valeur dans une liste de choix).
J'ai utilisé le DatePicker de microba pour l'editeur de date, j'ai donc mis le jar de microba dans mon zip.
Source / Exemple :
// Utilisation très simple :
/**
- Création de la table des propriétés :
- /
CCustomTableModel oModeleAffichage = new CCustomTableModel();
oModeleAffichage.setColumnCount(2);
oModeleAffichage.setRowCount(9);
oModeleAffichage.setColumnName(0, "Propriété");
oModeleAffichage.setColumnName(1, "Valeur");
JPropertyTable oTable = new JPropertyTable(oModeleAffichage);
oTable.setMaximumSize(new Dimension(300, 600));
oTable.setColumnSelectionAllowed(false);
oTable.setRowSelectionAllowed(false);
oTable.addPropertyRow(0, "Texte", EDataTypes.dataTypeString, "Toto", null);
oTable.addPropertyRow(1, "Fichier", EDataTypes.dataTypeFileName, "", null);
oTable.addPropertyRow(2, "Entier", EDataTypes.dataTypeInteger, 1, null);
oTable.addPropertyRow(3, "Flottant", EDataTypes.dataTypeFloat, 1.50, null);
oTable.addPropertyRow(4, "Booléen", EDataTypes.dataTypeBoolean, true, null);
oTable.addPropertyRow(5, "Couleur", EDataTypes.dataTypeColor, Color.red, null);
oTable.addPropertyRow(6, "Heure", EDataTypes.dataTypeHour, new Date(), null);
oTable.addPropertyRow(7, "Date", EDataTypes.dataTypeDate, new Date(), null);
Vector<String> oVecteur = new Vector<String>();
oVecteur.add("*");
oVecteur.add("**");
oVecteur.add("***");
oVecteur.add("****");
oVecteur.add("*****");
oTable.addPropertyRow(8, "Enumération", EDataTypes.dataTypeEnum, 0, oVecteur);
JScrollPane sclTable = new JScrollPane(oTable);
sclTable.setBounds(oTable.getBounds());
add(sclTable);
/**
- Lecture des données de la table :
- /
System.out.println(oModeleAffichage.getValueAtName("Texte").getValue());
Conclusion :
Un petit bug : pour l'éditeur de flottant, bizarrement le texte s'alligne à droite alors que je lui dit de rester à gauche, je vois pas la raison de ce bug, si quelqu'un à une idée, qu'il n'hésite pas !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.