Heim > Java > javaLernprogramm > Wie implementiert man eine benutzerdefinierte Validierung in JTable-Zellen und gibt visuelles Feedback?

Wie implementiert man eine benutzerdefinierte Validierung in JTable-Zellen und gibt visuelles Feedback?

DDD
Freigeben: 2024-10-31 02:42:01
Original
374 Leute haben es durchsucht

How to Implement Custom Validation in JTable Cells and Provide Visual Feedback?

So passen Sie die Eingabevalidierung in JTable-Zellen an, um bestimmte Werte abzulehnen

JTable führt standardmäßig die Eingabevalidierung durch, indem es Werte ablehnt, die nicht erzwungen werden können der angegebene Spaltenklassentyp. Wenn beispielsweise der Klassentyp einer Spalte auf „Ganzzahl“ festgelegt ist, werden nicht ganzzahlige Werte automatisch abgelehnt und der Umriss der Zelle wird auf Rot gesetzt.

Wenn Sie die Zelleneingabe über die Standardtypprüfung hinaus validieren möchten, Sie können die setValueAt-Methode Ihres Tabellenmodells überschreiben. Dieser Ansatz verhindert jedoch nur, dass die Eingabe akzeptiert wird, und löst nicht das gleiche visuelle Feedback wie die Typprüfung aus.

Benutzerdefinierte Validierung mit einem Zelleneditor implementieren

Zu Um die gleiche Validierung und das gleiche visuelle Feedback für benutzerdefinierte Validierungsregeln zu erzielen, sollten Sie die Verwendung eines benutzerdefinierten Zelleneditors in Betracht ziehen. In diesem Fall würden Sie eine Unterklasse von DefaultCellEditor erstellen, die:

  • den Eingabewert anhand Ihrer Validierungsregeln prüft (z. B. für positive Ganzzahlen).
  • Das isValid-Flag entsprechend setzt.
  • Legt die Rahmenfarbe der Zelle basierend auf dem Validierungsergebnis fest.

Beispiel: Benutzerdefinierter Zelleneditor für positive Ganzzahlen

Hier ist ein Beispiel eines benutzerdefinierten Zelleneditors, der positive Ganzzahlen validiert und die Rahmenfarbe der Zelle entsprechend festlegt:

<code class="java">import javax.swing.*;
import javax.swing.table.*;

class PositiveIntegerCellEditor extends DefaultCellEditor {

    private static final Border RED = new LineBorder(Color.RED);
    private static final Border BLACK = new LineBorder(Color.BLACK);
    private JTextField textField;

    public PositiveIntegerCellEditor(JTextField textField) {
        super(textField);
        this.textField = textField;
        this.textField.setHorizontalAlignment(JTextField.RIGHT);
    }

    @Override
    public boolean stopCellEditing() {
        try {
            int v = Integer.valueOf(textField.getText());
            if (v < 0) {
                throw new NumberFormatException();
            }
        } catch (NumberFormatException e) {
            textField.setBorder(RED);
            return false;
        }
        return super.stopCellEditing();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {
        textField.setBorder(BLACK);
        return super.getTableCellEditorComponent(table, value, isSelected, row, column);
    }
}</code>
Nach dem Login kopieren

Indem Sie den Zelleneditor der gewünschten Spalte auf Ihre benutzerdefinierte Implementierung einstellen, können Sie das gewünschte Validierungsverhalten und visuelle Feedback erreichen wenn Benutzer nicht positive Werte eingeben.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte Validierung in JTable-Zellen und gibt visuelles Feedback?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage