3 回答
TA贡献1839条经验 获得超15个赞
您可以使用以下代码访问文件选择器的默认按钮,然后将您自己的侦听器添加到该按钮:
JButton defaultButton = browser.getUI().getDefaultButton(browser);
TA贡献1828条经验 获得超6个赞
如前所述,一种解决方案是递归地遍历 JFileBrowser 的组件,直到找到正确的组件,这里是一个带有操作命令字符串“Open”的 JButton。
例如,此方法可能有效:
public static void recursiveComponentSearch(Component c, String actionCommand,
ActionListener listener) {
if (c instanceof JButton) {
JButton button = (JButton) c;
// TODO: delete the line below
System.out.printf("Text: \"%s\"; action command: \"%s\"%n", button.getText(),
button.getActionCommand());
if (button.getActionCommand().equalsIgnoreCase(actionCommand)) {
button.addActionListener(listener);
}
}
// recursive search here
if (c instanceof Container) {
Container container = (Container) c;
Component[] components = container.getComponents();
for (Component component : components) {
recursiveComponentSearch(component, actionCommand, listener);
}
}
}
像这样使用:
ActionListener listener = evt -> System.out.println("Save button here");
String actionCommand = "Open";
recursiveComponentSearch(browser, actionCommand, listener);
TA贡献1829条经验 获得超13个赞
我才发现问题出在线路上browser.setSelectedFile(new File("*.extension"));
。显然,这种方法不喜欢星号,将其替换为其他任何东西都可以解决问题。例如:browser.setSelectedFile(new File("new.extension"));
将按预期工作。
添加回答
举报