Java setText和setValue工作不正常
我正在尝试创建一个简单的程序,可以为我上传一些文件到windows共享。我有所有的基本功能,但我有一些收尾的问题。我有一个GUI,我只想显示一些关于上传的信息——一个进度条和一个标签。代码如下:Java setText和setValue工作不正常,java,swing,user-interface,settext,setvalue,Java,Swing,User Interface,Settext,Setvalue,我正在尝试创建一个简单的程序,可以为我上传一些文件到windows共享。我有所有的基本功能,但我有一些收尾的问题。我有一个GUI,我只想显示一些关于上传的信息——一个进度条和一个标签。代码如下: private void btn_UploadActionPerformed(java.awt.event.ActionEvent evt) { upl.setFiles(files); for(int i = 0; i < files.length; i++){
private void btn_UploadActionPerformed(java.awt.event.ActionEvent evt) {
upl.setFiles(files);
for(int i = 0; i < files.length; i++){
progressLabel.setText("Uploading " + files[i].getName());
upl.uploadFile(i);
uploadProgress.setValue(uploadProgress.getValue() + 90/files.length);
}
uploadProgress.setValue(100);
}
private void btn\u上载操作已执行(java.awt.event.ActionEvent evt){
upl.setFiles(文件);
对于(int i=0;i
当用户按下上传按钮时执行。问题是,setText和setValue并没有真正发挥应有的作用。当我按下上传按钮时,上传开始(并完成),但标签上的文本不会改变,进度条也不会改变。它们仅在上载完成时更改
整个源代码可在此处找到:
有什么建议吗?
另外,在java的新版本中:)
您正在事件分派线程中进行上载。因此,在同一线程中执行的绘制代码在上传完成之前无法执行。事件处理代码应尽快完成。如果您有一个长任务要执行,它应该在一个单独的后台线程中执行
使用SwingWorker做你想做的事。有一个易于理解的示例。在某些情况下,使用后台线程而不是事件调度线程可以防止任务运行时用户界面冻结 参考java教程 Swing程序员处理以下类型的线程:
- 初始线程,执行初始应用程序代码的线程
- 事件调度线程,其中执行所有事件处理代码。与Swing框架交互的大多数代码也必须在此线程上执行
- 工作线程,也称为后台线程,执行耗时的后台任务