我需要一个带有预览面板的 FileDialog 来显示图像。我可以使用 JFileChooser 来设置我需要的一切,我唯一找不到的就是设置 Accessory 组件的位置。我希望预览器位于文件列表和文件名文本字段之间。我只能在文件列表的右侧找到添加的附件组件。
是否可以在 fileList 和文件名文本字段之间进行设置?所有 JFileChooser 功能的替代方案是什么?
我需要一个带有预览面板的 FileDialog 来显示图像。我可以使用 JFileChooser 来设置我需要的一切,我唯一找不到的就是设置 Accessory 组件的位置。我希望预览器位于文件列表和文件名文本字段之间。我只能在文件列表的右侧找到添加的附件组件。
是否可以在 fileList 和文件名文本字段之间进行设置?所有 JFileChooser 功能的替代方案是什么?
扩展我的评论:一种快速而肮脏的方法是将附件组件添加到包含文件列表的组件中。它是一个带有 BorderLayout 的 FilePane 类型的自定义面板,位于列表/表格的中心,因此您可以将附件添加到其南部。在最简单的情况下(对于 Metal/Nimbus),选择器的中心本身就是 - FilePane,下面的代码片段可以直接使用。对于其他 LAF(fi Windows),您需要深入挖掘中心组件,直到找到列表/表格的父级。
JFileChooser chooser = new JFileChooser();
JComponent panel = new JPanel();
panel.add(new JButton("my dummy Accessory"));
panel.setBackground(Color.RED);
chooser.setAccessory(panel);
JComponent center = null;
BorderLayout layout = (BorderLayout) chooser.getLayout();
for (Component child : chooser.getComponents()) {
if (BorderLayout.CENTER == layout.getConstraints(child)) {
center = (JComponent) child;
}
}
if (center != null)
center.add(panel, BorderLayout.SOUTH);
谨防: