Heim  >  Artikel  >  Java  >  Wie erreicht man eine nicht kontinuierliche Zellenauswahl in einer JTable?

Wie erreicht man eine nicht kontinuierliche Zellenauswahl in einer JTable?

Susan Sarandon
Susan SarandonOriginal
2024-11-09 01:13:02328Durchsuche

How to achieve non-continuous cell selection in a JTable?

Nicht-kontinuierliche Zellenauswahl in JTable

Die Möglichkeit für Benutzer, einzelne nicht-kontinuierliche Zellen in einer JTable auszuwählen, bietet mehr Flexibilität und Benutzerfreundlichkeit. So können Sie dies erreichen:

STRG-MAUSKLICK

Wenn Sie die nicht kontinuierliche Zellenauswahl aktivieren möchten, ohne sich die zuletzt ausgewählte Zelle zu merken, halten Sie einfach die STRG-Taste gedrückt, während Sie auf die gewünschten Zellen klicken . Diese Methode ermöglicht eine einfache und direkte Zellenauswahl, ohne das Standardverhalten von JTable zu ändern.

ListSelectionModel-Implementierung

Alternativ können Sie ein benutzerdefiniertes ListSelectionModel implementieren, das eine nicht kontinuierliche Zellenauswahl unterstützt. Dies ist erforderlich, wenn Sie eine spezifische Kontrolle über den Auswahlprozess benötigen, z. B. die Beibehaltung der zuletzt ausgewählten Zelle oder die Implementierung benutzerdefinierter Auswahlregeln.

Der folgende Code demonstriert die Verwendung eines benutzerdefinierten ListSelectionModel für die nicht kontinuierliche Zellenauswahl in a JTable:

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class NonContinuousSelectionModel extends DefaultListSelectionModel {

    @Override
    public boolean isSelectedIndexSelected(int index) {
        boolean selected = super.isSelectedIndexSelected(index);
        if (selected) {
            return true;
        }
        int minIndex = getMinSelectionIndex();
        int maxIndex = getMaxSelectionIndex();
        if (minIndex == -1) {
            return false;
        }
        if (index < minIndex || index > maxIndex) {
            return false;
        }
        for (int i = minIndex; i <= maxIndex; i++) {
            if (i == index) {
                continue;
            }
            if (super.isSelectedIndexSelected(i)) {
                return false;
            }
        }
        return true;
    }
}

Um dieses ListSelectionModel zu verwenden, können Sie es mithilfe des setSelectionModel auf die JTable festlegen Methode:

JTable table = new JTable(data, columnNames);
table.setSelectionModel(new NonContinuousSelectionModel());

Dieser Ansatz ermöglicht eine bessere Anpassung und Kontrolle über den Zellauswahlprozess und ermöglicht komplexe Auswahlszenarien, die möglicherweise nicht vom Standardverhalten von JTable unterstützt werden.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine nicht kontinuierliche Zellenauswahl in einer JTable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn