Я пишу код потока, который открывает сокет сервера и который при достижении соединения запрашивает у пользователя выбор каталога.Я пытался использовать InvokeLater (), и он работает, но я не могу контролировать, когда извлекать выбранный каталог файлов, поэтому InvokeAndWait выглядел как правильная альтернатива.За исключением того, что он на самом деле ничего не делает, я даже пытался дать ему печать, и он, кажется, просто ничего не выполняет.Как мне это исправить?У меня заканчиваются идеи.Спасибо!
public class FileTransfListener implements Runnable {
protected JFileChooser dirChooser;
public FileTransfListener(JFileChooser f){
dirChooser=f;
}
@Override
public void run() {
ServerSocket serverSocket = null;
Socket socket = null;
BufferedReader in = null;
BufferedWriter out = null;
try {
serverSocket = new ServerSocket(60905);
} catch (IOException e1) {
return;
}
while(true){
try {
socket = serverSocket.accept();
String dir=null;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
dirChooser.showOpenDialog(null);
}
});
try{
dir= dirChooser.getSelectedFile().getAbsolutePath();
}
catch(NullPointerException e){
dir=null;
}
System.out.println(dir);
}
catch (IOException ex) {
ex.printStackTrace();
try {
serverSocket.close();
}
catch (IOException e) {
e.printStackTrace();
}
} catch (InvocationTargetException |InterruptedException e1) {
e1.printStackTrace();
}
}
}
}