2010-11-26 40 views
1

J'ai une JTable en utilisant DefaultTableModel comme son modèle de données interne. Il recevra le paquet du réseau et montrera le paquet dans le JTable. Maintenant, je veux limiter la taille du modèle de données afin qu'il ne contienne que les paquets les plus récents et les plus anciens, mais le DefaultTableModel utilise un dataVector de type Vector qui n'a pas de limite de taille. Quelqu'un pourrait-il donner de l'aide? Merci!comment limiter la taille d'un JTable et son modèle de table interne

Répondre

3

Si vous insérez toujours de nouvelles lignes en haut de la table, vous pouvez facilement effectuer une vérification sur le TableModel quand vous le faites, et supprimer manuellement:

model.insertRow(0,rowData); 
while (model.getRowCount() > myMaxRowCount) { 
    model.removeRow(model.getRowCount()-1); 
} 

Une autre option serait de mettre ce processus dans une extension de DefaultTableModel (ou même AbstractTableModel, ce qui vous permettrait d'abandonner le Vector pour quelque chose d'un peu plus moderne). Le modèle peut contenir le maxRowCount que vous souhaitez conserver, puis vous pouvez implémenter une nouvelle méthode updateModel qui fera le add des nouvelles données et le remove de l'ancien.