JFileChooser设置控制按钮显示为false和1

时间:2015-08-10 12:06:36

标签: java jfilechooser

08-10 14:01:05.007 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 08-10 14:01:05.007 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <html> 08-10 14:01:05.007 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <head> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <title>Index of /Comments/Cross/1</title> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ </head> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <body> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <h1>Index of /Comments/Cross/1</h1> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <ul><li><a href="/Comments/Cross/"> Parent Directory</a></li> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ <li><a href="%25!Emilio%25Gaines!%25466376720196163289492.txt"> %!Emilio%Gaines!%466376720196163289492.txt</a></li> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ </ul> 08-10 14:01:05.008 5655-5655/com.emiliogaines.mopedshowcase E/My :﹕ </body></html> 设置为false时,我很难从JFileChooser获取文件。

如果用户选择了现有文件,我可以使用setControlButtonsAreShown()获取此文件,但是当他们键入新文件名时,getSelectedFile()将返回null。

当我使用getSelectedFile() JFileChooser并点击“保存”按钮时,可以按预期使用setControlButtonsAreShown(true)获取用户输入的任何文件名,但getSelectedFile()时使用我似乎无法恢复此文件。

即使我调用了setControlButtonsAreShown(false),也会发生这种情况,如果它已经显示,则可能与单击“保存”按钮的情况相同。

我做错了什么?或者将approveSelection()打开按钮操作事件分配给自定义个人JfileChooser的任何其他方式?

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方法。
这将遍历FileChooser Container中的所有组件,并从JTextField获取文本并在FileChooser中设置为选择 点击一下按钮或任何事件后调用此方法。

    private void failProofSetPath(JFileChooser chooser) {
        File selectedFileFromTextBox = null;
        String text = getTextOfFileViewer(chooser);
        if (text != null && new File(text).exists()) {
            selectedFileFromTextBox = new File(text);
        }
        if (selectedFileFromTextBox != null
                && (chooser.getSelectedFile() == null
                || !selectedFileFromTextBox.equals(chooser.getSelectedFile()))) {
            chooser.setSelectedFile(selectedFileFromTextBox);
        }
    }

    private String getTextOfFileViewer(Container c) {
        int len = c.getComponentCount();
        for (int i = 0; i < len; i++) {
            Component comp = c.getComponent(i);
            if (comp instanceof JTextField) {
                JTextField b = (JTextField) comp;
                return b.getText();
            } else if (comp instanceof Container) {
                String val = getTextOfFileViewer((Container) comp);
                if (val != null) {
                    return val;
                }
            }
        }
        return null;
    }