2013-06-17 6 views
-1

좋아요. 약간의 개인 프로그래밍 프로젝트로서, 과거의 프로그램을 만들려고했는데 (GUI를 통해) 특정 항목의 데이터를 기록하도록했습니다. 게임 (길드 워 2 호기심이라면). GUI는 충분히 간단합니다 : 과 JTextFields을 포함하는 JFrame은 무엇을 입력 할 것인가, 잘 입력 할 텍스트 필드입니다. 기본 GUI 물건. 입력은 항목 이름과 금액입니다. 또한 JButtons 두 개가 있으며 항목을 추가하고 항목을 빼는 수신기와 마지막으로 오류 메시지 표시로 작동하는 또 다른 JLabel이 있습니다.ODFDOM으로 작업하는 Java GUI에 도움이 필요합니다.

획득 한 항목 수의 "매핑"구조는 TreeMap에 java 프로그램을 실행하는 동안 저장됩니다.

데이터를 .csv 파일로 메모리에 저장했지만 어젯밤에 시스템을 재 작업하기로 결정했습니다. 따라서 필자는 스프레드 시트 형식을 "쓰기"위한 아이디어를 얻었으며 "OpenOffice가 아닌 이유는 무엇입니까?"라고 생각했기 때문에 ODFToolkit API 등을 발견했습니다. 특히 ODFDOM 도구가 물론 관심의 대상이었습니다. 그래서 나는이 물건을 리팩토링했다고 생각했는데 (적절한 용어라면) 일이 순조롭게 진행될 것이라고 생각했지만, 여기에 내 문제가있다.

따라서 GUI에는 입력 테스트 입력이있다. "Rotten Egg "유효한 항목입니다 (invalids 창에 오류 표시) 그리고 얻은 양의 일부 양의 정수 (유효한"금액 "가능한 경우에만) 넣어. 지금,이 같은 유효한 입력 이 잘 작동하지만 다른 입력 또는 동일한 잘못된 항목을 입력 할 때 표시해야합니다 오류 텍스트를 표시하는 동일한 다시 시도하십시오. 그것을 통해 그것을보고 디버깅하려면 적어도 몇 가지 시도했지만, 손실 이 끔찍한 버그가 어떻게 생성되었는지 알려드립니다.
GUI 클래스 : http://pastebin.com/BWA4SUY0

답변

0

한숨 I 다음 Map 구조와 "뒤에"는 GUI에가는 다른 것들 즉 http://pastebin.com/rEbFS27j
다른 클래스

나는 여기에 내 자신의 두 클래스 페이스트 빈에 연결됩니다 결국 그것을 알아 냈다. 스프레드 시트에 쓰는 메서드에서이 루프가 있습니다.

while (it.hasNext() == true) { 
      Map.Entry pairs = (Map.Entry)it.next(); 

      odt.getTableList().get(0).getCellByPosition("A" + i).setDisplayText((String) pairs.getKey()) ; 
      odt.getTableList().get(0).getCellByPosition("B" + i).setDisplayText((pairs.getValue().toString())) ; 
      it.remove(); // avoids a ConcurrentModificationException 
      i++ ; 
      } 

라인 it.remove() ("가"반복자 변수입니다) 치명적인 오류 ... 내가 반복자를 사용하는 방법에 대한 과거의 물건을 보았다 복사 - 붙여 넣기에서 불행한 남은입니다 ... :// 참으로 그것은이 무시 무시한 "오직 한 번"일종의 버그의 원인이었습니다. 다른 사람의 코드 스 니펫을 내 작업에 붙여 넣을 때 내가 잘못되었거나 불필요한 것을 사용하지 않도록해야합니다.