2016-06-14 5 views
0

FileChooser에서 가져온 수정할 수없는 목록에서 요소를 제거하고 싶습니다. 그러나 그렇게하려고 시도하면 UnsupportedOperationException이 발생합니다. 누구든지 나를 삭제/목록에서 콘텐츠를 제거하는 방법을 제안 할 수 있습니까?수정할 수없는 컬렉션을 수정할 수있는 방법이 있습니까?

+2

"수정할 수 없음"은 사용자가 수정할 수 없음을 의미합니다. 실제로 무엇을해야합니까? 필요한 요소로 새 목록을 만들 수 없습니까? –

+0

가장 간단한 방법은 원본 목록에서 새 목록을 만드는 것입니다. 무엇을 성취하려고합니까? 이것은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) 일 수 있습니다. – Itai

+0

이미지 탐색 및 편집을위한 응용 프로그램을 만들려고합니다. 그 목적을 위해 showOpenMultipleDialog() 메서드를 사용하고 있습니다. 이 메서드에서 반환 한 목록에서 파일을 삭제하려고합니다. 파일이 삭제되지만 파일 목록에서 해당 파일을 제거하는 작업에서 예외가 발생합니다. –

답변

0

정적 클래스 FXCollections을 확인하십시오. 몇 가지 유용한 방법은 다음과 같습니다

, 당신은 목록의 사본을 얻을 수정할 수 있습니다 당신이 원하는대로

+0

이 메소드는 ObservableList를 생성합니다. ObservableList는 필요 이상이 될 수 있습니다 (예 :'FileChooser.showOpenMultipleDialog()'는 보통'List'를 반환합니다). 일반적인'List' 만 필요하면'javafx.collections' API가 아닌'java.util' API를 사용해야합니다. –

+0

@james_D 당신 말이 맞아요, java.util.List 을 반환하는 showOpenMultipleDialog()를 사용하고 있습니다. 그러나 그런 다음 목록에서 요소를 제거하는 방법도 얻지 못하고 있습니다. –

0

나는 하나의 해결책을 발견했다. 그렇게하는 것이 옳지 않을 수도 있지만 작동합니다. 내가 한 것은; 향상된 for 루프를 사용하여 수정할 수없는 목록의 내용을 ArrayList에 복사했습니다. 그런 다음 ArrayList에 remove 메서드를 적용했습니다. 하지만 더 좋은 솔루션을 게시하십시오.

+0

복사를 수행하는 [constructor] (http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-java.util.Collection-)을 사용하지 않는 것이 좋습니다. 당신? –

+0

@James_D이 솔루션을 이용해 주셔서 감사합니다. 내 코드를이 코드로 교체하면 잘 작동합니다. –

관련 문제