2011-12-19 2 views
0

Java 응용 프로그램을 개발 중입니다. 응용 프로그램의 프레임 구조는 다음과 같습니다. 처음에는 패널이있는 JFrame을 가지고 있습니다. 패널에서 나는 많은 JLists가 있고 Jlists 사이에는 드래그 앤 드롭 기능이 구현되어있다. 이제 응용 프로그램을 닫기 전에 UI의 내용을 저장하려고합니다. 어떤 직렬화 및 deserialization 사용하고 성공적으로 구현 한. deserialization 후 드래그 앤 드롭을 제외하고 모든 것이 예상대로 작동합니다. 어떤 오류도 발생하지 않지만 끌어서 놓기 처리기가 목록에 설정되지 않았습니다. 드래그 앤 드롭 핸들러에 print 문을 넣으려고했지만 결과가 없습니다. 어느 누구도 그 이유가 무엇인지 말해 줄 수 있습니까?Java에서 직렬화 및 직렬화 해제 후 드래그 앤 드롭이 작동하지 않습니다.

다음, 스윙 작업을 할 때, 다양한 비록 내가 일반적으로

$public class ListTransferHandler extends TransferHandler implements Serializable{ 

private static final long serialVersionUID = -3484014856820532284L; 
//followed by all methods 
    // canImport 
    // createtranferable 
    // getSourceActions 
    // importData 
    //exportDone 
} 
+0

추측 하건데, 나는 .equals()보다는 ==가있는 곳에서 코드의 위치를 ​​먼저 찾는다. 버그를 재생산 할 수있는 컴파일 가능한 독립 실행 형 코드의 가장 작은 조각을 만드는 것이 좋습니다. 사람들은 그 정보로 당신을 더 잘 도울 수 있습니다. –

+0

비록 내가 문제를 해결할 수있는 내용을 serialize 및 UI 구성 요소를 serialize하는 피할 여전히 실제 문제를 식별 할 수 있도록 문제를 명확하게 할 수있는 예제 코드를 게시합니다 –

답변

0

처럼 각 JList의 구성 요소

$private ListTransferHandler dndHandler = new ListTransferHandler(); 

내 ListTranferHandler 클래스 뭔가에 추가 한 DnDhandler의 정의입니다 구성 요소 Serializable입니다. 이 아니므로을 직접 직렬화해야합니다. 데이터를 지속 시키려면 스윙 요소 자체가 아닌 데이터를 직렬화하십시오.

관련 문제