JFileChooser
은 복수 파일을 선택할 수 있지만 동시에 선택할 수있는 파일 수에는 제한이 있습니다.이벤트에 대한 응답으로 JFileChooser에서 선택한 파일을 변경하십시오.
가장 최근에 선택한 파일에 우선 순위를 부여하여 실시간으로 선택을 제한하고 싶습니다. 즉, 세 번째 파일을 선택하면 첫 번째 파일 (즉, 가장 먼저 선택한 파일)이 있어야합니다. 자동으로 선택 취소됩니다.
나는이 하나 같이 PropertyChangeListener
이 작동 것이라고 생각 : fc.setSelectedFiles()
에 대한 호출이 (.이 이벤트를 발생하지만, 그것은 목록에서 선택을 업데이트하지 않습니다)
public static void main(String[] args) throws IOException {
final JFileChooser fc = new JFileChooser(didir);
fc.setMultiSelectionEnabled(true);
fc.addPropertyChangeListener(new PropertyChangeListener() {
private final Set<File> selected = Sets.newLinkedHashSet();
public void propertyChange(PropertyChangeEvent evt) {
if (JFileChooser.SELECTED_FILES_CHANGED_PROPERTY.equals(evt.getPropertyName())) {
File[] selectedFiles = fc.getSelectedFiles();
if (selectedFiles.length > 2) {
selected.addAll(Arrays.asList(selectedFiles));
int numToRemove = Math.max(0, selected.size() - 2);
Iterables.removeIf(Iterables.limit(selected, numToRemove),
Predicates.alwaysTrue());
fc.setSelectedFiles(selected.toArray(new File[0]));
}
}
}
});
fc.showOpenDialog(null);
}
JFileChooser
이 열려있는 동안 프로그래밍 방식으로 선택 항목을 변경하도록 할 방법이 있습니까? 또는 선택 영역의 크기를 제한하는 또 다른 방법이 있습니까?
간단한 구현을 해줘서 고맙지 만 문제가 해결되지는 않습니다. 내 버전과 마찬가지로, 그것은 메탈이나 윈도우의 룩앤필로 작동하지만 매킨토시에서는 작동하지 않습니다. – finnw
좋아, 나는 당신의 버전에 문제가있어서 문제라고 생각했다. 저는 Mac이 없으므로 당신을 도울 수 없습니다. 행운을 빕니다 ;) –