-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
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)
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)