2013-10-29 44 views
2

我需要预览面板的FileDialog来显示图像。我可以使用JFileChooser来设置我需要的所有东西,唯一我找不到的是设置附件组件的位置。 我希望预览器位于文件列表和文件名称文本字段之间。我可以找到仅在文件列表右侧添加的配件组件。自定义JFileChooser在文件列表下面设置预览器

是否可以在fileList &之间设置文本文本字段?什么可以成为JFileChooser所有功能的替代选择?

+1

不支持 - 如果你绝望,你可能会尝试在创建之后删除/添加选择器的预览(查看ui-dele的来源看看使用哪个Layoutmanager) – kleopatra

回答

1

展开我的评论:快速&脏方法是将附件组件添加到包含文件列表的组件。它是一个带有BorderLayout的FilePane类型的自定义面板,在它自己的中心列表/表格中,所以你可以在南部添加附件。在最简单的情况下(对于Metal/Nimbus),选择器的中心本身就是FilePane,下面的代码片段可以直接使用。对于其他LAF(f.i. 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); 

当心:

  • 它依赖于实施细节,从而脆
  • 它的高度LAF依赖
  • 它不会在运行时生存LAF切换
+0

非常感谢... – Tvd