gpt4 book ai didi

java - JFileChooser设置目录

转载 作者:行者123 更新时间:2023-12-02 01:38:02 25 4
gpt4 key购买 nike

我正在尝试设置我的 JFileChooser 应显示的目录。我正在尝试使用方法 setCurrentDirectory:

public class FileChooser {
public static void main(String[] args) {
JFrame jf = new JFrame();
JFileChooser chooser = new JFileChooser();

jf.add(chooser);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.pack();

File file = new File("C:\\");

if(file.exists() && chooser != null) {
chooser.setCurrentDirectory(file);
}
}
}

这是奇怪的部分:

当我运行我的程序时,一切正常。但是当我尝试再次运行它时,它有时会抛出 NullPointerException 。这可能会在第一次重新运行后发生,也可能会连续运行 10 次。没有模式。我不会修改我的 C: 目录。

这是完整代码,没有被剪裁。

完整的堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1368)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
at javax.swing.plaf.basic.BasicListUI.getCellBounds(BasicListUI.java:952)
at javax.swing.JList.getCellBounds(JList.java:1637)
at javax.swing.JList.ensureIndexIsVisible(JList.java:1149)
at sun.swing.FilePane.ensureIndexIsVisible(FilePane.java:1708)
at sun.swing.FilePane.doDirectoryChanged(FilePane.java:1631)
at sun.swing.FilePane.propertyChange(FilePane.java:1681)
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
at java.awt.Component.firePropertyChange(Component.java:8434)
at javax.swing.JFileChooser.setCurrentDirectory(JFileChooser.java:598)
at filechooser.FileChooser.main(FileChooser.java:21)

当我尝试通过构造函数 JFileChooser(String currentDirectoryPath) 设置目录时,一切正常。即使我连续尝试了100次(相信我,我尝试了100次)。代码:

public class FileChooser {
public static void main(String[] args) {
JFrame jf = new JFrame();
JFileChooser chooser = new JFileChooser("C:\\");

jf.add(chooser);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.pack();
}
}

所以 chooser.setCurrentDirectory(new File("C:\\")); 一定有问题我无法与构造函数一起工作。我必须设置 currentDirectory。

当抛出 Exception 时,getCurrentDirectory() 返回 C:\,即使我的 FileChooser 是不显示该目录。

有人知道这里发生了什么吗?

最佳答案

感谢Andrew Thompson ,我成功了。我不得不更换

chooser.setCurrentDirectory(file);

SwingUtilities.invokeLater(() -> chooser.setCurrentDirectory(new File("C:\\")));

关于java - JFileChooser设置目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57507632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com