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>
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!