像其他一些问过类似问题的人一样,我疯狂地试图“修复”我的 JFileChooser 对话框生成代码,直到我注意到它正在生成,但它出现在所有其他窗口下方并且没有关联的任务栏图标(所以根本不知道它存在!)。
我知道这些类似的问题:
...但这些问题的答案似乎过于复杂,涉及创建更多的 GUI 元素,我无法相信这是必需的。
我也知道这里关于不要混合控制台和 Swing 界面的建议,但我想让事情尽可能简单。
我想知道如何生成一个位于其他窗口上方的 JFileChooser (showOpenDialog) 对话框,而无需求助于创建其他 GUI 元素(JPanel 等)。
注意 1: 该站点似乎在讨论解决方案,但很难遵循。
注意 2:如果我的要求是不可能的,那么有关如何至少为对话框提供任务栏图标(同样不需要它有父级)的信息会很棒。
我的代码现在创建了一个隐藏的对话框,在这里:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
class Client {
String currentDirectoryFolderPath = "H:\\myFolder";
javax.swing.JFileChooser jFileChooser =
new JFileChooser(currentDirectoryFolderPath);
jFileChooser.setVisible(true); //defaults to invisible?!?
javax.swing.filechooser.FileNameExtensionFilter fileExtensionFilter
= new FileNameExtensionFilter(
comma-separated values and text files",
"csv", "txt");
jFileChooser.setFileFilter(fileExtensionFilter);
//int returnVal = jFileChooser.showOpenDialog(jFileChooser);
//jFileChooser.showDialog(null, "testing 1--2--3");
//jFileChooser.requestFocusInWindow();
//jFileChooser.requestFocus();
//jFileChooser.showOpenDialog(null);
//jFileChooser.requestFocus();
int returnVal = jFileChooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
jFileChooser.getSelectedFile().getName());
}
System.out.println(JFileChooser.APPROVE_OPTION);
System.out.println(jFileChooser);
}
注释代码是我尝试过的所有无效的东西,包括
- 调用对话框前后不同类型的焦点请求,以及
- 提供对话框对象本身作为它自己的父对象,而不是传递一个空值(我认为这值得一试。)。