Comment peut-on déplacer une ligne dans JTAble code> de sorte que rangée1 strong> va à Row22 strong> S position et
3 Réponses :
TableModel model = jTable.getModel(); for(int col=0; col<model.getColumnCount(); col++) { Object o1 = model.getValueAt(row1, col); Object o2 = model.getValueAt(row2, col); model.setValueAt(o1, row2, col); model.setValueAt(o2, row1, col); }
Utilisez le ou, si vous n'utilisez pas la valeur par défautTableModel, impliquez une méthode Simliar dans votre modèle personnalisé. P> MOVEROW (...) CODE> méthode du
ParfaultTableModel code>. p>
Je n'ai pas remarqué qu'il y avait un lien. ça a été utile. Merci.
Le lien exemple a été supprimé. Vous aurez maintenant besoin de lire l'API pour la syntaxe appropriée.
Voici mon code que je viens de développer en utilisant la réponse dans cette question.
Avec cette fonction, vous pouvez sélectionner plusieurs lignes à la fois et les déplacer dans un La dernière ligne de code de la méthode ( jtalle code>. J'ai joint ces fonctions à
jbutton code>, mais je les nettoie pour les rendre plus lisibles.
setrowselectionInterval () code>) est Utilisé pour suivre la sélection sur la ligne déplacée, car
moverow () code> ne déplace pas la sélection mais le contenu de la ligne. p>
public void moveUpwards()
{
moveRowBy(-1);
}
public void moveDownwards()
{
moveRowBy(1);
}
private void moveRowBy(int by)
{
DefaultTableModel model = (DefaultTableModel) table.getModel();
int[] rows = table.getSelectedRows();
int destination = rows[0] + by;
int rowCount = model.getRowCount();
if (destination < 0 || destination >= rowCount)
{
return;
}
model.moveRow(rows[0], rows[rows.length - 1], destination);
table.setRowSelectionInterval(rows[0] + by, rows[rows.length - 1] + by);
}