FilePicker
🔴 · Pacote:
dev.crossfly.ui.picker· Estende:Picker· Status: reservado (indisponível)
FilePicker está reservado na API 2026: no código atual é apenas um esqueleto vazio —
public class FilePicker extends Picker {}
— sem construtores, campos, layout ou getAnswer() próprio. Ele herda o getAnswer() da base (Picker), que devolve null; portanto não produz resultado e não deve ser usado.
Exemplo completo (copiar, colar e rodar)
FilePicker está reservado e não produz resultado (herda getAnswer() da base, que devolve null). O exemplo abaixo é executável e demonstra honestamente essa limitação: ele mostra o picker, coleta o getAnswer() e reporta que veio null. Para escolher mídia de fato, o botão ao lado usa a alternativa disponível, PhotoPicker.
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** Tela principal executável. Aponte o launcher (classname) e rode: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Label saida = new Label("Resultado: —");
add(LAY_AUTO, saida);
// FilePicker é um esqueleto reservado: getAnswer() sempre devolve null.
Button tentarFilePicker = new Button("Tentar FilePicker (reservado)")
.onAction(c ->
{
FilePicker fp = new FilePicker();
fp.show(answer ->
saida.setText("FilePicker devolveu: " + answer + " (reservado, sem resultado)"));
});
add(LAY_AUTO, tentarFilePicker);
// Alternativa real para capturar mídia: PhotoPicker.
Button usarPhotoPicker = new Button("Alternativa: PhotoPicker")
.onAction(c ->
{
PhotoPicker pp = new PhotoPicker(PhotoPicker.Preview.PHOTO);
pp.show(answer ->
{
String caminho = (String) answer;
if (pp.isError())
saida.setText("Erro de câmera: " + caminho);
else
saida.setText("Foto salva em: " + caminho);
});
});
add(LAY_AUTO, usarPhotoPicker);
}
}
Os trechos abaixo mostram só o miolo (o que vai dentro de
onShow()). Para rodar, coloque-os no esqueletoMainWindowacima.
Objetivo pretendido
Navegar o sistema de arquivos e devolver o caminho do arquivo/pasta selecionado. O comentário no fonte indica a intenção de migrar de um seletor baseado em árvore lazy a partir de um root — mas isso ainda não foi portado.
O que NÃO existe (não documente como disponível)
A implementação anterior (árvore lazy com Tree/TreeModel, preview de imagem, volumes via Dropdown, seleção múltipla) foi removida, coerente com a remoção do módulo ui/tree na modernização. As APIs antigas — Filter, initialPath, multipleSelection, mountTree, getTree, etc. — não existem mais.
Alternativas enquanto está reservado
- Para capturar mídia da câmera, use
PhotoPicker. - Para escolher uma cor/data/hora, use os pickers específicos.
- Trate
FilePickercomo indisponível até o código ganhar corpo.