我会总结并抱歉我的英语。
我有一个客户端和一个服务器线程,当触摸一个按钮时,发送文件正确地显示了带有showOpenDialog的JFileChooser,当想要在收到文件时在服务器线程中创建第二个JFileChooser时,只会出现一个空白屏幕。
我已经在一个类,一个函数,一个新的JFrame和同一个函数中创建了代码。
从我看到的情况来看,在创建第二个JFileChooser时会出现问题,因为如果在第一个中我通过showSaveDialog更改它,那么它显示得很好。
代码:
class GuardarArchivo extends javax.swing.JFrame {
JFrame jf = new JFrame();
jf.setAlwaysOnTop(true);
JFileChooser elegirRuta = new JFileChooser();
elegirRuta.setDialogTitle("Selecciona donde guardar el archivo: ");
int returnVal = elegirRuta.showSaveDialog(jf);
System.out.print(returnVal);
ruta = elegirRuta.getSelectedFile().getAbsolutePath();
}
图像:
答案 0 :(得分:1)
您的问题可能在这些评论中显示:
我有一个客户端和一个服务器线程,当触摸一个按钮时,发送文件正确地显示了带有showOpenDialog的JFileChooser,当想要在收到文件时在服务器线程中创建第二个JFileChooser 时,只出现一个空白屏幕。
您可能遇到线程问题。您不应该在Swing事件派发线程(EDT)以外的任何线程中打开JFileChooser。可能文件传输代码阻止EDT阻止它执行其必要的功能,包括绘制GUI的功能,因此是全白对话框。由于你没有发布有效的MCVE我无法给你一个确切的解决方案,除了建议你注意在EDT的线程中执行所有长时间运行的代码,以及EDT上的所有Swing代码。有关Swing线程问题的更多信息,请阅读:Lesson: Concurrency in Swing。
要获得更好的帮助,请考虑创建并发布Minimal, Complete, and Verifiable Example Program。我们不希望看到您的整个程序,而是您应该将代码压缩到仍然编译的最小位,没有与您的问题无关的额外代码,但仍然可以证明您的问题。您可以通过简单地尝试隔离并暴露错误来自己解决问题。