Le Format de la Date dans un Jtable/ResultSet
Je vais avoir des problèmes d'affichage d' Date
s dans le format que je veux dans mon JTable
. Mon JTable
a été créé à l'aide d'un jeu de résultats et les listes.
J'ai essayé les dans getValueAt(.)
mais pas de chance:
if(value instanceof Date)
{
//System.out.println("isDate");
DateFormat formatter = DateFormat.getDateInstance();
SimpleDateFormat f = new SimpleDateFormat("MM/dd/yy");
value = f.format(value);
Date parsed = (Date) value;
try {
parsed = (Date) f.parse(value.toString());
} catch (ParseException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
value = parsed.toString();
}
La println(.)
n'est jamais imprimé de sorte qu'il n'est même pas arriver à cela. Le Format affiché est Apr 10, 1992
mais je veux 04/10/92
Alors que nous sommes sur le sujet de Date
dans JTables
... j'ai isCellEditable(.)
comme vrai, mais je ne peut pas modifier la Date de cellules. Comment faites-vous cela?
Vérifiez si votre "instanceof" la condition fait référence à java.util.Date ou à java.sql.Date.
Toutes les exceptions et stacktraces? Les poster.
Bien que le jeu de résultats obtient sql.Date je crois. Aucune des exceptions ou des erreurs
Dois avouer que je suis surpris que l'OP a accepté la réponse au cours de la réutilisables FormatRenderer je fournis ci-dessous. Étant donné que le code ci-dessus est en fait un hack pour réinitialiser la valeur utilisée par le moteur de rendu, je pense qu'il serait plus simple de remplacer la setValue() la méthode du moteur de rendu. N'est-ce pas le moyen de l'API a été conçu pour être utilisé? C'est aussi l'approche présentée dans le lien vers le Swing tutoriel ci-dessus. Peut-être que je suis absent quelque chose?
J'aime à la fois les réponses. Ne peut pas accepter tout le monde :\ Désolé - souhaite que je pourrais accepter à la fois.
Toutes les exceptions et stacktraces? Les poster.
Bien que le jeu de résultats obtient sql.Date je crois. Aucune des exceptions ou des erreurs
Dois avouer que je suis surpris que l'OP a accepté la réponse au cours de la réutilisables FormatRenderer je fournis ci-dessous. Étant donné que le code ci-dessus est en fait un hack pour réinitialiser la valeur utilisée par le moteur de rendu, je pense qu'il serait plus simple de remplacer la setValue() la méthode du moteur de rendu. N'est-ce pas le moyen de l'API a été conçu pour être utilisé? C'est aussi l'approche présentée dans le lien vers le Swing tutoriel ci-dessus. Peut-être que je suis absent quelque chose?
J'aime à la fois les réponses. Ne peut pas accepter tout le monde :\ Désolé - souhaite que je pourrais accepter à la fois.
OriginalL'auteur twodayslate | 2010-03-09
Vous devez vous connecter pour publier un commentaire.
Ne remplacent pas les
getValue
, utiliser unTableCellRenderer
à la place:OriginalL'auteur Peter Lang
Sonne comme un toString() de la représentation de la Date est stockée dans le TableModel et non pas un Objet Date. Si vous avez besoin de vérifier la façon dont vos données sont copiées à partir du jeu de résultats de la TableModel. Assurez-vous que vous utilisez le jeu de résultats.méthode getObject (). Ou peut-être le problème, c'est que vous êtes de stocker une Chaîne de caractères dans votre base de données qui est formaté de la façon dont vous le voyez.
De toute façon, une fois que vous êtes en mesure de stocker un objet Date dans le TableModel, découvrez Convertisseurs De Format De Tableau qui vous permet de créer un moteur de rendu avec un format de date personnalisé dans une seule ligne de code.
OriginalL'auteur camickr
Vous devez créer une sous-classe de DefaultTableCellRenderer et remplacer
setValue(Object)
ensuite définir le rendu de cellule pour l'ensemble de la colonne.Ensuite dans votre code d'utilisateur à faire quelque chose comme
JTable.getColumnModel().getColumn(index).setCellRenderer(new DateCellRenderer());
OriginalL'auteur ntm
Il y a un tiers d'ajouter sur disponible.. moment.js.
Il suffit de l'ajouter via nuget, déplacer les scripts pour vos scripts de contenu de fichier. Ajouter cette ligne (exemple)
Javascript:
Et puis nous changeons notre champ déclaration dans jtable.
Javascript:
OriginalL'auteur Ze Knight