J'utilise jtable swing, il ya checkbox à l'intérieur jtable de la mienne, quelle serait la meilleure façon de supprimerRow de checkbox seulement? J'utilise defaultTableModel et removeRow, j'ai besoin de savoir comment obtenir la valeur TRUE de case à cocher cochée.jTable case à cocher et suppression de ligne
Répondre
Lorsque vous définissez un JCheckBox
sur l'éditeur de cellules, vous pouvez en lire la valeur sous la forme Boolean
.
class TableModel extends DefaultTableModel {
public TableModel(Object[] headers) {
super(null, headers);
}
public Class getColumnClass(int c) {
switch (c) {
case 0: return Boolean.class;
default: return String.class;
}
}
public boolean isCellEditable(int row, int column) {
if (column == 0) return true;
return false;
}
}
TableModel tableModel = new TableModel(<headers as String []>);
JTable table = new JTable(tableModel);
....
TableColumnModel columnModel = table.getColumnModel();
// setting the first column to use checkboxes
columnModel.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));
...
int rowCount = tableModel.getRowCount();
for(int i=0; i<rowCount; i++) {
Boolean selected = (Boolean)tableModel.getValueAt(0, 0);
if(selected) {
tableModel.removeRow(0);
}
}
'Boolean selected = tableModel.getValueAt (i, 0);' type non compatible, lors de la fusion '(Boolean) tableModel.getValueAt..', il y a une erreur de pointeur nul – SOer
Il y a pas besoin de définir un éditeur personnalisé. Remplacez la méthode getColumnClass (..) pour renvoyer Boolean en tant que classe de colonne et la table utilisera le moteur de rendu et l'éditeur appropriés. De même, lorsque vous supprimez des lignes, vous devez commencer à partir de la fin de la table et compter à rebours afin de ne pas ignorer les lignes lorsque vous les supprimez. – camickr
@SOer coulée fixe, merci. 'NullPointerException' sur quelle opération? – khachik
Si vous avez besoin de mettre en œuvre la « Supprimer tous les éléments sélectionnés » vous pouvez envisager l'extension TableModel suivante, qui sauvera des repeints (ce qui peut donner une meilleure expérience utilisateur):
import javax.swing.table.DefaultTableModel;
public class RemoveCheckedRowsTableModel extends DefaultTableModel {
public void removeCheckedRows(int removeCheckBoxColumn) {
int beginRow = 0;
int endRow = 0;
RangeSearch: while (beginRow < dataVector.size()) {
while (getValueAt(beginRow, removeCheckBoxColumn).equals(Boolean.FALSE)) {
beginRow++;
endRow++;
if (beginRow >= dataVector.size()) {
break RangeSearch;
}
}
while ((endRow + 1) < dataVector.size()
&& getValueAt((endRow + 1), removeCheckBoxColumn).equals(Boolean.TRUE)) {
endRow++;
}
for (int i = beginRow; i <= endRow; i++) {
dataVector.removeElementAt(beginRow);
}
fireTableRowsDeleted(beginRow, endRow);
endRow = ++beginRow;
}
}
}
- 1. Sélection d'une case à cocher et suppression d'une ligne de grille de données dans Flex
- 2. Comment afficher une case à cocher dans une JTable?
- 3. case à cocher case à cocher
- 4. DataList et Case à cocher
- 5. Case à cocher d'image de case à cocher dans UITableViewCell
- 6. case à cocher et zone de texte
- 7. Android liste et case à cocher
- 8. jQuery compte de manière incrémentielle la case à cocher sélectionnée et désélectionnée case à cocher
- 9. case à cocher - asp.net
- 10. Rails, case à cocher
- 11. sélectionné Case à cocher
- 12. Struts case à cocher
- 13. collant case à cocher
- 14. listview case à cocher élément de ligne vérifié
- 15. jQuery: case à cocher
- 16. Validateur de case à cocher
- 17. iphone SDK: Comment cocher la case pour supprimer la ligne?
- 18. Listview avec plus d'une case à cocher par ligne?
- 19. Html.Grid contenant la case à cocher par ligne
- 20. Activez la case à cocher de la case à cocher pour décocher à l'aide de jquery
- 21. asp.net case à cocher liste
- 22. jQuery case à cocher question
- 23. C# case à cocher eventhandler
- 24. Case à cocher pour UITableView
- 25. validation pour case à cocher
- 26. Liste déroulante Case à cocher
- 27. Case à cocher dans Flex
- 28. jquery array case à cocher
- 29. yahoo mail case à cocher
- 30. case à cocher Ajout dynamique
Si vous avez un NPE alors soit votre code est faux ou les données dans le modèle de table sont mauvaises. Publiez votre SSCCE (http://sscce.org) démontrant le problème. – camickr
il n'y a NPE que si j'utilise la méthode khachik – SOer