Heim  >  Artikel  >  Java  >  Wie validiere ich die JTable-Zelleneingabe auf nicht positive Ganzzahlwerte?

Wie validiere ich die JTable-Zelleneingabe auf nicht positive Ganzzahlwerte?

DDD
DDDOriginal
2024-10-26 13:35:02565Durchsuche

How to Validate JTable Cell Input for Non-Positive Integer Values?

So validieren Sie JTable-Zelleneingaben auf ungültige Werte

Beim Definieren des Klassentyps einer JTable-Spalte als bestimmte Zahlenunterklasse lehnt Swing den Benutzer automatisch ab Eingabe, die nicht zum Typ passt. Wenn die Spalte beispielsweise als Integer.class definiert ist, werden doppelte Werte abgelehnt.

Um den gleichen Effekt für nicht positive Werte zu erzielen, kann die setValueAt-Methode im Tabellenmodell überschrieben werden. Dieser Ansatz allein liefert dem Benutzer jedoch kein visuelles Feedback.

Eine umfassendere Lösung beinhaltet die Verwendung eines benutzerdefinierten Zelleneditors. Ein solcher Editor ist der PositiveIntegerCellEditor, der DefaultCellEditor erweitert und die stopCellEditing-Methode überschreibt, um nach negativen oder Nullwerten zu suchen. Wenn ein ungültiger Wert erkannt wird, setzt der Editor den Rand der Zelle auf Rot und bricht den Bearbeitungsvorgang ab.

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

Um diesen Editor zu verwenden, kann der Zelleneditor der Tabellenspalte mit dem folgenden Code eingestellt werden:

<code class="java">table.getColumnModel().getColumn(columnIndex).setCellEditor(new PositiveIntegerCellEditor(new JTextField()));</code>

Das obige ist der detaillierte Inhalt vonWie validiere ich die JTable-Zelleneingabe auf nicht positive Ganzzahlwerte?. 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