簡體   English   中英

自定義JFileChooser以將預覽器設置在文件列表下方

[英]Customize JFileChooser to set Previewer below file list

我需要一個帶預覽面板的FileDialog來顯示圖像。 我可以使用JFileChooser設置所需的所有內容,唯一找不到的是設置附件組件的位置。 我希望預覽器位於文件列表和文件名文本字段之間。 我只能在文件列表的右側找到添加的配件。

是否可以在fileList和filename文本字段之間進行設置? 所有JFileChooser功能都可以替代嗎?

擴大我的評論:一種快速而骯臟的方法是將附件組件添加到包含文件列表的組件中。 這是FilePane類型的自定義面板,帶有BorderLayout,位於列表/表格的中央,因此您可以將附件添加到其南部。 在最簡單的情況下(對於Metal / Nimbus),選擇者的中心本身就是FilePane,下面的代碼段可以直接使用。 對於其他LAF(在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切換生存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM