문제

나는 JTable을 사용하여 날짜 열을 표시하는 프로젝트를 진행하고 있습니다. 날짜에 대한 사용자 입력에 대한 유효성 검사가 필요했기 때문에 형식 검증을위한 마스킹과 실제 날짜 유효성 검사를위한 구문 분석 조합을 구현했습니다. 날짜 열에 대한 사용자 정의 셀 레디터를 사용 하여이 작업을 수행했습니다.

내 마스크드 셀러 디터 안에는 jformattedTextField가 있습니다. 날짜를위한 마스킹을 설정합니다. 그런 다음 실제 유효성 검사를 허용하기 위해 입력 변수를 추가합니다. 내 입력 Verifier는 ()를 확인할 수 있습니다. 중 하나가 유효하지 않은 경우 returns false를 확인하고 입력 상류기는 텍스트 필드 (셀 편집기)에 초점을 잠그고 작은 메시지 대화 상자가 날짜 형식을 사용자에게 알리면 표시됩니다.

오류 메시지는 편집중인 셀 아래에 팝업되는 작고 노동되지 않은 비 모달, 중심이없는 JDialog입니다. 키 프레스 또는 성공적인 날짜 확인에서 사라집니다. 작은 가장자리 케이스를 제외하고는 잘 작동합니다.

사용자가 응용 프로그램 상단의 메뉴 버튼을 선택하면 유효하지 않은 편집이 대화 상자를 팝업 한 경우 화면을 전환하여 현재 화면에있는 모든 것을 파괴합니다 (테이블 포함). 그러나 대화 상자가 표시되고 키 프레스/성공적인 편집이 발생하지 않았으므로 대화 상자는 결코 숨겨지지 않습니다. 다른 화면에서 완전히 관련이없는 컨텍스트에서 볼 수 있습니다. 사용자가 테이블로 화면을 끄면 사용자가 대화 상자를 제거 할 수있는 방법이 없습니다.

나는 대화 자체에 타이머 및/또는 mouselistener를 던지는 것에 대해 토론하여 사라지게하는 것에 대해 토론했지만 실제 문제를 무시하고 있다고 생각합니다. 대화 상자는 결코 처분되지 않으며 여전히 눈에 잘 띄게 설정되어 있고 쓰레기 수집가가 그것을 제거하는 것을 막고 있기 때문에 나는 그것이 확실합니다.

jtable을 고정하는 패널에 정리 방법이 있지만, 그것을 제거하기 위해 대화 상자 (입력 변수의 구성 요소)를 참조하는 좋은 방법을 찾을 수 없습니다. 대화 상자는 테이블의 상위 패널에서 꽤 멀리 제거되었습니다. (패널 -> jtable-> celleditor-> jformattedTextField-> 입력 보도기 -> jdialog)

테이블이 파괴 될 때 대화를 강요하는 방법에 대한 아이디어가 있습니까? 자세한 내용이 필요한 경우 알려주십시오. 나는 너희들이 세부 사항에 휩싸이지 않게하려고 노력하고 있지만 많은 일이 일어나고있다.

도움이 되었습니까?

해결책

첫 번째 생각으로, 당신은 청취자 접근을 내려갈 수 없을 수 있습니다. valdiation이 성공할 때 CloseErrordialog () 유형 메소드가 호출되는 경우 메뉴 작업을 선택할 때 호출 할 수도 있습니다.

대안으로, 아마도 메뉴에서 메뉴로의 전환을 어떤 식 으로든 제어하고, "정리"메소드를 만들 수있는 오류 대화 상자를 종료 할 수 있습니다. 이를 통해 메뉴를 변경할 때 발생하는 다른 행동이 같은 장소에서 발생할 수 있습니다.

내 머리 꼭대기에 대한 몇 가지 빠른 아이디어. 그들이 당신이 의미하는 바에 따라 있기를 바랍니다.

다른 팁

많은 사람들이 이것을 말하기 위해 저에게 투표 할 것이지만, 당신의 대화가 모달이어야하는 것처럼 들리므로 사용자는 먼저 해고하지 않고 그것을 위치 할 수 없습니다. 또는 최소한이 대화 상자가 표시되는 동안 사람들이 멀어 질 수있는 메뉴를 비활성화합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top