Bonjour,
Je cherche depuis longtemps un exemple de mapping JTable <-> fichier.xml
avec mise-à-jour du fichier.xml après édition de la JTable.
Rien trouvé :((
J'ai trouvé cette exemple
[ Lien ]qui affiche dans un JTable les données d'un fichier .CSV. Lorsque au moins une cellule est double-cliquée (même sans modifier son contenu), le programme met-à-jour data.csv
Dans l'exemple du fichier de données datas.csv j'ai ajouté une colonne nommée "CaseàCocher", c'est mon nouveau fichier datas_avec_boolean.csv
1. Comment afficher la colonne CaseàCocher avec des cases à cocher?
2. Comment rendre une colonne non modifiable? (j'ai trouvé :)
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (1<columnIndex) {//coll.éditable dès la 3ème
return true;
} else {
return false;
}
}3. Comment afficher les colonnes de largeur proportionnelle à leur contenu le plus large (valeur ou nom de colonne)? Comme le serait les colonnes d'un tableau HTML: <table width="100%" > ...
4 De quelles façons judicieuse puis-je modifier ces 2 classes:
DataFileTable.java
DataFileTableModel.java
pour obtenir le même outil fonctionnant avec ce fichier.xml (ci-dessous) ?
- Quelle(s) classe(s) modifier ?
- Quelles méthodes modifier/supprimer/ajouter ?
5.a)
Pour le passage XML -> JTable:
- Faut-il obligatoirement passer par des objects (en utilisant pas ex. http://xstream.codehaus.org )?
C'est-à-dire: XML -> objet -> JTable
5.b) Pour le passage JTable -> XML:
- Est-ce suffisant cette boucle ?
String xml = "";
for(int i = 0; i < jt.getRowCount(); i++)
{
xml+= "<row number = '" + i + "'>\n";
for(int j = 0; j < jt.getColCount(); j++)
{
xml+= " <col number = '" + j + "'>" + jt.getValueAt(i,j) + "</col>";
}
xml += "</row>
}
//Then save xml to file.
http://forum.java.sun.com/thread.jspa?threadID=615454&messageID=34213746. Quelle type (il y en a plusieurs en Java) permettant de stocker une date et heure me conseillez-vous d'utiliser?
fichier.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Seuls les éléments "name" et "saveit" sont éditables dans la JTable
- name est un champs de saisie (string).
- saveit est une case à cocher (boolean).
-->
<list>
<stick>
<name>USB Stick 512 Mo</name><!-- chaine -->
<saveit>1</saveit><!-- boolean -->
<id>F5B0-1A6D</id><!-- chaine -->
<plugedin>0</plugedin><!-- boolean -->
<creation>20070610 0845</creation><!-- date et heure -->
<lastBU>20070629 1252</lastBU><!-- date et heure -->
</stick>
<stick>
<name>Clé USB 2 GB</name>
<saveit>1</saveit>
<id>B0F5-6F1A</id>
<plugedin>0</plugedin>
<creation>20070611 1852</creation>
<lastBU>20070630 2130</lastBU>
</stick>
</list>Merci bien.
Pratique:
toute la Javadoc en 1 seul fichier .CHM
[ Lien ]Dave