如何拒絕JTable 儲存格中的無效輸入
在JTable 中,設定列類別類型可確保自動拒絕無效輸入並顯示紅色輪廓,如在整數列中輸入雙精度值時所看到的。但是,此行為不會擴展到自訂驗證規則,例如拒絕負值或零值。
要複製非正輸入的自動拒絕行為,我們可以建立一個自訂單元格編輯器來檢查有效性
PositiveIntegerCellEditor
以下PositiveIntegerCellEditor 擴充預設單元格編輯器以執行所需的驗證:
<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>
用法
編輯指定列中的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕非正的單元格時,PositiveIntegerCellEditor 將拒絕在非正的單元格輸入,以紅色勾勒單元格,並阻止單元格編輯完成。
提供的程式碼還包括增強功能用於單元格編輯期間的右對齊和錯誤處理。
附錄
本文也提供了 JTable 中單元格編輯驗證的其他資源的連結。
以上是以下是一些基於問題且與文章內容相符的標題選項: * 如何對 JTable 單元強制執行自訂驗證規則? * 如何建立自訂儲存格編輯器來拒絕 Inv的詳細內容。更多資訊請關注PHP中文網其他相關文章!