Heim >Java >javaLernprogramm >Wie implementiert man eine benutzerdefinierte Validierung in JTable-Zellen und gibt visuelles 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:
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>
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!