Maison > Java > javaDidacticiel > Comment activer la sélection de cellules non continue dans JTable ?

Comment activer la sélection de cellules non continue dans JTable ?

DDD
Libérer: 2024-11-08 16:41:02
original
1009 Les gens l'ont consulté

How to Enable Non-Continuous Cell Selection in JTable?

Sélection de cellules non continues dans JTable

Dans JTable, le mode de sélection par défaut autorise uniquement la sélection de cellules contiguës. Pour permettre une sélection de cellules individuelles et non continues, les approches suivantes peuvent être envisagées :

1. CTRL MOUSE_CLICK :

Si setSelectionMode(ListSelectionModel.SINGLE_SELECTION) n'est pas défini, maintenir la touche CTRL enfoncée tout en cliquant sur les cellules permet une sélection de plusieurs cellules non continues.

2. ListSelectionModel modifié :

Comme ListSelectionModel est partagé à la fois par JTable et JList, le ListSelectionModel modifié suivant peut être utilisé :

import java.awt.Component;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;

import javax.swing.*;

public class NonContSelectionModel extends DefaultListSelectionModel {

    @Override
    protected void processMouseEvent(MouseEvent e) {
        int modifiers = e.getModifiers() | InputEvent.CTRL_MASK;
        MouseEvent myME = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), modifiers, e.getX(),
                e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
        super.processMouseEvent(myME);
    }
}
Copier après la connexion

Ce modèle peut être appliqué à JTable en utilisant setSelectionModel( new NonContSelectionModel()).

Démonstration :

L'extrait de code suivant crée une JTable qui permet une sélection de cellules non continue à l'aide du ListSelectionModel modifié :

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class NonContJTableSelection {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel panel = new JPanel();
                String[] columnNames = {"Name", "Age", "Profession"};
                Object[][] data = {
                        {"John Doe", 30, "Software Engineer"},
                        {"Jane Doe", 28, "Doctor"},
                        {"Peter Jones", 45, "Lawyer"}
                };
                JTable table = new JTable(data, columnNames);
                table.setSelectionModel(new NonContSelectionModel());
                JScrollPane scrollPane = new JScrollPane(table);
                panel.add(scrollPane);

                frame.add(panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal