Sélection de plusieurs lignes dans JTable
Lorsque vous êtes confronté à un JTable contenant du texte non modifiable et des cases à cocher booléennes, il est souhaitable de décocher toutes les cases sous sélection lorsque l'un d'entre eux n'est pas coché, et vice versa.
Pour faciliter ce comportement, considérons l'exemple ci-dessous :
import java.awt...; import javax.swing...; public class CheckABunch extends JPanel { // Constants and variables for data model and JTable setup private static final int CHECK_COL = 1; private static final Object[][] DATA = {...}; private static final String[] COLUMNS = {...}; private DataModel dataModel = ...; private JTable table = ...; private DefaultListSelectionModel selectionModel; // Constructor initializes the interface and selection model public CheckABunch() { super(new BorderLayout()); ... table.setPreferredScrollableViewportSize(...); selectionModel = ...; } // DataModel provides custom column classes and editability private class DataModel extends DefaultTableModel { public DataModel(Object[][] data, Object[] columnNames) {...} public Class<?> getColumnClass(int columnIndex) {...} public boolean isCellEditable(int row, int column) {...} } // ControlPanel contains buttons for selecting and clearing private class ControlPanel extends JPanel { public ControlPanel() {...} } private class SelectionAction extends AbstractAction { boolean value; public SelectionAction(String name, boolean value) {...} public void actionPerformed(ActionEvent e) {...} } // Main method for creating and displaying the interface public static void main(String[] args) {...} }
Dans cet exemple, SelectionAction gère les clics sur les boutons pour mettre à jour les cases à cocher en fonction de la sélection de l'utilisateur. Le dataModel garantit que la colonne de cases à cocher est modifiable et du type correct.
En utilisant cette approche, vous pouvez facilement implémenter la sélection et la synchronisation de cases à cocher sur plusieurs lignes dans votre JTable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!