gpt4 book ai didi

java - JFileChooser 启动问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:12:52 24 4
gpt4 key购买 nike

我在使用“JFileChooser”Swing 对象的开发机器上启动任何应用程序时遇到问题。当我最初开发应用程序并对其进行测试时,文件选择器窗口打开,一切正常,但大约一周后,我尝试再次运行该应用程序,但什么也没有显示。

一开始以为是Threading的问题(我原来的app用了一点点多线程),于是复制粘贴了下面的代码(我从网上找的代码)测试了一下:

package com.kwm.util.test;


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

public class Main {

public static void main(String[] args) {
final JFrame frame = new JFrame("JFileChooser Demo");


final JFileChooser fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(new File("C:\\tmp"));

JButton btn1 = new JButton("Show Dialog");
btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fc.showDialog(frame, "Choose");
}
});
JButton btn2 = new JButton("Show Open Dialog");
btn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
int retVal = fc.showOpenDialog(frame);
if (retVal == JFileChooser.APPROVE_OPTION) {
File[] selectedfiles = fc.getSelectedFiles();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < selectedfiles.length; i++) {
sb.append(selectedfiles[i].getName() + "\n");
}
JOptionPane.showMessageDialog(frame, sb.toString());
}

}
});
JButton btn3 = new JButton("Show Save Dialog");
btn3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fc.showSaveDialog(frame);

}
});

Container pane = frame.getContentPane();
pane.setLayout(new GridLayout(3, 1, 10, 10));
pane.add(btn1);
pane.add(btn2);
pane.add(btn3);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
}

但我仍然什么也没看到。我猜机器有问题,但无法确定问题所在。

如有任何帮助,我们将不胜感激。

编辑 1操作系统版本为Windows Server 2003 Enterprise Version, SP1

Java 版本是:1.5.0_12(JDK 和 JRE)

我也担心这可能与网络问题有关...... JFileChooser 正在寻找网络目录,DNS 可能有冲突。有没有办法检查这个?也许检查 JVM 正在记录什么?

最佳答案

@Andrew Thompson 是对的:从 event dispatch thread 开始可能不是问题所在,但众所周知,相关错误千变万化且难以重现。作为引用,我在下面展示了一个常见的重构。它在 Mac OS X 10.5 上测试成功,使用

$ java -versionjava version "1.5.0_28"
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class Main {

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

public void run() {
createGUI();
}
});
}

private static void createGUI() throws HeadlessException {
final JFrame frame = new JFrame("JFileChooser Demo");
final JFileChooser fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
fc.setCurrentDirectory(new File("C:\\tmp"));
JButton btn1 = new JButton("Show Dialog");
btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fc.showDialog(frame, "Choose");
}
});
JButton btn2 = new JButton("Show Open Dialog");
btn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
int retVal = fc.showOpenDialog(frame);
if (retVal == JFileChooser.APPROVE_OPTION) {
File[] selectedfiles = fc.getSelectedFiles();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < selectedfiles.length; i++) {
sb.append(selectedfiles[i].getName());
sb.append("\n");
}
JOptionPane.showMessageDialog(frame, sb.toString());
}
}
});
JButton btn3 = new JButton("Show Save Dialog");
btn3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fc.showSaveDialog(frame);
}
});
Container pane = frame.getContentPane();
pane.setLayout(new GridLayout(3, 1, 10, 10));
pane.add(btn1);
pane.add(btn2);
pane.add(btn3);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}

关于java - JFileChooser 启动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920604/

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