使用 JFileChooser 時,若誤將其作為組件 add 到 JFrame,會導致對話框內嵌在窗口中顯示異常(非彈出模態)。本文說明正確用法。
JFileChooser jfc = new JFileChooser();
this.add(jfc); // ❌ 錯誤:將文件選擇器當作普通組件添加到幀
jfc.showOpenDialog(null);
JFileChooser jfc = new JFileChooser();
// this.add(jfc); // 刪除這行
int result = jfc.showOpenDialog(this); // 參數為父組件,用於居中定位
if (result == JFileChooser.APPROVE_OPTION) {
File selected = jfc.getSelectedFile();
// 處理文件...
}
JFileChooser 是對話框,非普通容器組件showOpenDialog(Component parent) 參數指定父窗口,null 表示無父窗口(屏幕居中)APPROVE_OPTION(確定)、CANCEL_OPTION(取消)、ERROR_OPTION(出錯)jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); // 只選文件
jfc.setMultiSelectionEnabled(false); // 單選
jfc.setFileFilter(new FileNameExtensionFilter("圖片", "jpg","png","gif")); // 過濾器
jfc.setCurrentDirectory(new File(System.getProperty("user.home"))); // 初始目錄
記住:對話框類(JFileChooser、JColorChooser、JOptionPane 等)不要 add 到容器,直接調用 showXxxDialog 即可。