我正在做一个网络项目。我在Java Project控制台应用程序下编译了一个代码并且它可以运行但是当我创建一个GUI并指定在按下按钮时运行的代码时,它会在单击按钮时挂起。
这是源代码:
@Action
public void EstablishConnection() {
serverAddress = jTextFieldServerAddress.getText();
serverPort = Integer.parseInt(jTextFieldPort.getText());
serverUName = jTextFieldUName.getText();
serverUPwd = jTextFieldUPwd.getText();
try {
client = new FTPClient();
client.connect(serverAddress, serverPort);
boolean login = client.login(serverUName, serverUPwd);
if(login) {
System.out.println("Successfully logged in\n");
}
else {
System.out.println("Unable to login\n");
}
}
catch(Exception ex) {
System.out.println("Exception Raised: " + ex);
}
}
在挥杆应用程序中按下按钮时会调用该操作。它不适合我。但它对于控制台应用程序的工作速度非常快。
答案 0 :(得分:3)
任何时候我都会看到"挂起"我假设您需要使用单独的线程来执行挂起代码。有关解决方案,请参阅Concurrency in Swing。
答案 1 :(得分:1)
我建议您应该运行依赖于外部因素的代码,例如访问远程服务器等,这可能会延迟响应,在它自己的线程中。
显示带有不确定进度条的MessageDialog:
connProgressBar.setIndeterminate(true);
您既不知道您的连接是否会终止,也不知道它是否会终止,因此添加一个允许用户在她感觉到的时候终止连接线程的按钮。
由于您可能为了上传和下载文件而连接到ftp服务器,因此在建立连接后,使用确定的进度条显示在新线程中运行的文件或文件进度的下载百分比。