Heim > Java > javaLernprogramm > Hier sind einige Titeloptionen, die fragenbasiert sind und zum Inhalt des Artikels passen: * Wie erzwinge ich benutzerdefinierte Validierungsregeln für JTable-Zellen? * Wie kann ich einen benutzerdefinierten Zelleneditor erstellen, um Inv. abzulehnen?

Hier sind einige Titeloptionen, die fragenbasiert sind und zum Inhalt des Artikels passen: * Wie erzwinge ich benutzerdefinierte Validierungsregeln für JTable-Zellen? * Wie kann ich einen benutzerdefinierten Zelleneditor erstellen, um Inv. abzulehnen?

DDD
Freigeben: 2024-10-27 09:44:30
Original
293 Leute haben es durchsucht

Here are a few title options that are question-based and match the article's content:

* How to Enforce Custom Validation Rules for JTable Cells?
* How can I Create a Custom Cell Editor to Reject Invalid Input in JTable?
* Beyond Type Checking: Implement

So lehnen Sie ungültige Eingaben in JTable-Zellen ab

In JTable stellt die Festlegung des Spaltenklassentyps sicher, dass ungültige Eingaben automatisch mit einem Rot abgelehnt werden Umriss, wie man sieht, wenn man doppelte Werte in eine Integer-Spalte eingibt. Dieses Verhalten erstreckt sich jedoch nicht auf benutzerdefinierte Validierungsregeln, wie z. B. das Zurückweisen negativer oder Nullwerte.

Um das automatische Zurückweisungsverhalten für nicht positive Eingaben zu reproduzieren, können wir einen benutzerdefinierten Zelleneditor erstellen, der die Gültigkeit prüft während der Zellbearbeitung.

PositiveIntegerCellEditor

Der folgende PositiveIntegerCellEditor erweitert den Standard-Zelleneditor, um die gewünschte Validierung durchzuführen:

<code class="java">private static 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

Verwendung

Beim Bearbeiten einer Zelle in der angegebenen Spalte lehnt der PositiveIntegerCellEditor nicht-positive Eingaben ab, umrandet die Zelle rot und verhindert den Abschluss der Zellbearbeitung.

Der bereitgestellte Code enthält auch Verbesserungen für Rechtsausrichtung und Fehlerbehandlung während der Zellbearbeitung.

Nachtrag

Der Artikel enthält auch Links zu zusätzlichen Ressourcen zur Zellbearbeitungsvalidierung in JTable.

Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die fragenbasiert sind und zum Inhalt des Artikels passen: * Wie erzwinge ich benutzerdefinierte Validierungsregeln für JTable-Zellen? * Wie kann ich einen benutzerdefinierten Zelleneditor erstellen, um Inv. abzulehnen?. 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