2016-06-26 1 views
1

특정 문자 만 jTable에 입력 할 수있는 메서드가 필요합니다.jTable의 열에서 결정된 문자 사용

내 JFrame의는 다음과 같습니다 :

columnd에서

enter image description here

"Precedentes"내가 열이 숫자 만 허용하고 있음을 필요로 ",".

제가 필요 입력 예 :

enter image description here

이 컬럼 내 검증 방법은 아래와 같다 :

private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {     
      i = 0; 
      String carac="0987654321,"; 
      if(!carac.contains(tableModel.getValueAt(i, 3)+"")){ 
      tableModel.consume();// TODO add your handling code here: 
      } 
} 

I =>는 (그것이하는 루프에서 사용되는 내 줄 수있어 각 줄을 확인하십시오). 그래서 사용자가 "선행"열에 입력 한 내용을 한 줄씩 한 줄씩 찾아서 그 방법으로 유효성을 검사합니다.

숫자가 아니거나 "무언가"를 입력하면 "Precedente"열이 받아 들여지지 않아야합니다.

오류 메시지 나는 내 방법을 실행할 때 :

내가 필요한 것을 생각
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 

는 번호를 ","받아들이는 마스크입니다,하지만 난의 칼럼에이 작업을 수행하는 방법을 모른다 jTable, 텍스트 필드를 사용하여이 방법을 알고 있지만 텍스트 필드에서 유효성을 검사하는 데 사용하는 메서드는 jtable에서 작동하지 않습니다.

답변

1

How to Use Tables: Using an Editor to Validate User-Entered Text에 표시된대로 DefaultCellEditor 메서드 stopCellEditing()을 재정 의하여 텍스트가 유효한지 확인할 수 있습니다. 은 Integer의 모델 값에 대한 예제입니다. here은 모델 값의 예입니다. Date 값의 경우 here과 같이 CellEditorJFormattedTextField을 사용할 수 있으며 과 같이 SimpleDateFormat을 사용하여 날짜의 유효성을 검사 할 수 있습니다. 개별 문자의 유효성을 검사하려면 here과 같이 MaskFormatter으로 JFormattedTextField을 구성하십시오.

+0

사용자가 숫자가 아니거나 ","jtable 열에서 프로그래머가 수락하지 않으면 (jframe 테이블에 쓰기를 허용하지 않음) 원하는 작업을 수행 할 수 있습니다. 이 두 가지 방법을 통합? – Mutante

+0

개별적인 키 입력을 검사하는 'DocumentListener'또는 [DocumentFilter]를 사용하여 [MaskFormatter'] (https://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#maskformatter) 숫자 입력을 강제합니다. [here] (http://stackoverflow.com/a/37878422/230513). – trashgod

+0

원래 게시물을 내가하려는 일로 업데이트했습니다. – Mutante