Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4428757

JFileChooser () crashes when the setAcceptAllFileFilterUsed(false) is called.

XMLWordPrintable

    • beta
    • x86
    • windows_2000

      java -version
      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b50)
      Java HotSpot(TM) Client VM (build B50, mixed mode)

      Consider the following:

      import java.io.*;
      import java.awt.*;
      import javax.swing.*;

      public class TestJFC {

            public TestJFC() {
                  try {
                        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                  }
                  catch(Exception e) {
                        e.printStackTrace();
                  }
            }

           public void openFileChooser1(){
                   JFileChooser jfc = new JFileChooser();
                   jfc.showOpenDialog(null);
           }

            public void openFileChooser(){
                  JFileChooser jfc = new JFileChooser();
                  jfc.setMultiSelectionEnabled(false);
                  jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                  jfc.setAcceptAllFileFilterUsed(false); // Works ok when this line is commented.
                  jfc.setFileFilter(new TextFileFilter());
                  jfc.setDialogTitle("Open : Select text file to open");
                  jfc.showOpenDialog(null);

            }

            public static void main(String[] args) {
                  TestJFC testJFC1 = new TestJFC();
                  testJFC1.openFileChooser();
                  System.exit(0);
            }

            class TextFileFilter extends javax.swing.filechooser.FileFilter {

                  public TextFileFilter() {

                  }

                  public boolean accept(File f) {
                        if (f != null){
                              String fName = f.getName().toLowerCase();
                              if (f.isDirectory() || fName.endsWith(".txt") ){
                                    return true;
                              }
                        }
                        return false;
                  }

                  public String getDescription() {
                        return "All Text Files (*.txt)";
                  }
            }
      }

      Running this program throws the exception when the JFileChooser function jfc.setAcceptAllFileFilterUsed(false) is called.

      The stack trace is as follows:

      java.lang.NullPointerException
      at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:246)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1113)
      at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:528)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1113)
      at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:518)
      at com.sun.java.swing.plaf.windows.WindowsFileChooserUI.getPreferredSize(WindowsFileChooserUI.java:1165)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1111)
      at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:518)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1113)
      at javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:794)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1113)
      at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:518)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at java.awt.Window.pack(Window.java:402)
      at javax.swing.JFileChooser.showDialog(JFileChooser.java:678)
      at javax.swing.JFileChooser.showOpenDialog(JFileChooser.java:563)
      at testjdk14.TestJFC.openFileChooser(TestJFC.java:39)
      at testjdk14.TestJFC.main(TestJFC.java:45)
      java.lang.ClassCastException: java.lang.String
      at com.sun.java.swing.plaf.windows.WindowsFileChooserUI$FilterComboBoxRenderer.getListCellRendererComponent(WindowsFileChooserUI.java:1646)
      at javax.swing.plaf.basic.BasicComboBoxUI.getDefaultSize(BasicComboBoxUI.java:1208)
      at javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(BasicComboBoxUI.java:1291)
      at com.sun.java.swing.plaf.windows.WindowsComboBoxUI.getMinimumSize(WindowsComboBoxUI.java:52)
      at javax.swing.JComponent.getMinimumSize(JComponent.java:1195)
      at javax.swing.BoxLayout.checkRequests(BoxLayout.java:427)
      at javax.swing.BoxLayout.minimumLayoutSize(BoxLayout.java:270)
      at java.awt.Container.minimumSize(Container.java:968)
      at java.awt.Container.getMinimumSize(Container.java:952)
      at javax.swing.JComponent.getMinimumSize(JComponent.java:1197)
      at javax.swing.BoxLayout.checkRequests(BoxLayout.java:427)
      at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:245)
      at java.awt.Container.preferredSize(Container.java:933)
      at java.awt.Container.getPreferredSize(Container.java:917)
      at javax.swing.JComponent.getPreferredSize(JComponent.java:1113)
      at java.awt.BorderLayout.layoutContainer(BorderLayout.java:620)
      at java.awt.Container.layout(Container.java:780)
      at java.awt.Container.doLayout(Container.java:770)
      at java.awt.Container.validateTree(Container.java:847)
      at java.awt.Container.validateTree(Container.java:854)
      at java.awt.Container.validateTree(Container.java:854)
      at java.awt.Container.validateTree(Container.java:854)
      at java.awt.Container.validateTree(Container.java:854)
      at java.awt.Container.validateTree(Container.java:854)
      at java.awt.Container.validate(Container.java:822)
      at java.awt.Window.dispatchEventImpl(Window.java:1336)
      at java.awt.Component.dispatchEvent(Component.java:3327)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:437)
      at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:140)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:126)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:121)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
           

            leifs Leif Samuelsson (Inactive)
            mzaudousunw Menasse Zaudou (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: