本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。
FilePicker
🔴 · 包:
dev.crossfly.ui.picker· 继承:Picker· 状态:预留(不可用)
FilePicker 在 2026 API 中处于预留状态:在当前代码中它只是一个空骨架 ——
public class FilePicker extends Picker {}
—— 没有构造函数、字段、布局或自己的 getAnswer()。它继承了基类的 getAnswer()(Picker),该方法返回 null;因此它不产生任何结果,不应被使用。
完整示例(复制、粘贴并运行)
FilePicker 处于预留状态,不产生结果(继承基类的 getAnswer(),返回 null)。下面的示例是可执行的,并诚实地演示了这一限制:它显示 picker,收集 getAnswer(),并报告返回值为 null。要真正选择媒体,旁边的按钮使用可用的替代方案 PhotoPicker。
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** 可执行的主界面。将 launcher 指向此类(classname)并运行: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 是一个预留的骨架:getAnswer() 始终返回 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);
// 捕获媒体的真实替代方案: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);
}
}
下面的片段只展示核心部分(放入
onShow()内的内容)。要运行它们,请将其放入上面的MainWindow骨架中。
预期目标
浏览文件系统并返回所选文件/文件夹的路径。源码中的注释表明其意图是从基于 root 的惰性树选择器迁移过来 —— 但这尚未移植。
不存在的内容(不要将其记录为可用)
先前的实现(使用 Tree/TreeModel 的惰性树、图片预览、通过 Dropdown 的卷、多选)已被移除,这与现代化改造中移除 ui/tree 模块相一致。旧的 API —— Filter、initialPath、multipleSelection、mountTree、getTree 等 —— 均已不存在。
预留期间的替代方案
- 要从相机捕获媒体,请使用
PhotoPicker。 - 要选择颜色/日期/时间,请使用相应的专用 picker。
- 在代码充实之前,请将
FilePicker视为不可用。
另请参阅
这个页面有帮助吗?感谢你的反馈!