我有一些代码需要花几分钟的时间来处理,它必须为长数组中的每个字符串连接到Web,每个字符串都是一个url。我想这样做,以便每次连接时都应刷新jtextarea,以使用户不会盯着看起来冻结20分钟的空白页。或需要多长时间
这是我尝试但没有成功的示例:
try {
ArrayList<String> myLinks = LinkParser.getmyLinksArray(jTextArea1.getText());
for (String s : myLinks) {
jTextArea2.append(LinkChecker.checkFileStatus(s) + "\n");
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(jTextArea1, "Parsing Error", "Parsing Error", JOptionPane.ERROR_MESSAGE);
Logger.getLogger(MYView.class.getName()).log(Level.SEVERE, null, ex);
}
问题是您需要异步执行计算。您应该创建一个执行计算的后台线程,然后使用SwingUtilities.invokeLater更新JTextArea。
final ArrayList <String> myLinks = // ...
(新线程()
{
public void run(){
对于(String s:myLinks){
尝试{
最终的String结果= LinkChecker.checkFileStatus(s)+“ \ n”;
SwingUtilities.invokeLater(new Runnable(){
public void run(){
jtextArea2.append(result);
}
});
}捕获(IOException错误){
//处理错误
}
}
}
})。开始();
编辑
已经指出,JTextArea的append函数实际上是线程安全的(不同于大多数Swing函数)。因此,对于这种情况,不需要通过invokeLater更新它。但是,您仍然应该在后台线程中进行处理,以便允许GUI更新,因此代码为:
final ArrayList <String> myLinks = // ...
(新线程()
{
public void run(){
对于(String s:myLinks){
尝试{
jtextArea2.append(LinkChecker.checkFileStatus(s)+“ \ n”);
}捕获(IOException错误){
//处理错误
}
}
}
})。开始();
但是,几乎所有其他修改Swing对象的操作都需要使用invokeLater(以确保修改发生在GUI线程中),因为几乎所有的Swing函数都不是线程安全的。
问题内容: 我有一些代码需要花几分钟的时间来处理,它必须为长数组中的每个字符串连接到Web,每个字符串都是一个url。我想这样做,以便每次连接时都应刷新jtextarea,以使用户不会盯着看起来冻结20分钟的空白页。或需要多长时间 这是我尝试但没有成功的示例: 问题答案: 问题是您需要异步执行计算。您应该创建一个执行计算的后台线程,然后使用SwingUtilities.invokeLater更新J
本文向大家介绍PHP实现即时输出、实时输出内容方法,包括了PHP实现即时输出、实时输出内容方法的使用技巧和注意事项,需要的朋友参考一下 老生长谈了。。纯备忘 对于运行时间较长的PHP程序来说可能都需要即时输出内容来查看运行情况。 例, 按例子测试,达到了PHP即时实时输出内容的效果。
问题内容: 我正在使用NSTask运行rsync,并且希望状态显示在窗口内滚动视图的文本视图中。现在我有这个: 这就是我有关传输的一些统计信息,但我想实时获取输出,例如在Xcode中运行该应用程序并将其放入文本视图时所打印的内容。有没有办法做到这一点? 问题答案: 您可以使用通知从管道异步读取。这是一个演示其工作原理的简单示例,希望可以帮助您入门: 而是可以将接收到的字符串附加到文本视图中。 上面
我有将adb logcat的输出打印到wx中的代码。TextArea框,这一切都很好,单击按钮,logcat打印出来,当电话点击时,它打印出来的更多,一切都很正常。toolsDir和pkgName都是字符串。 然而,我已经修改了这段代码,只打印出特定应用程序的日志,这是使用windows“findstr”函数完成的,adb logcat|findstr myApp。下面的代码最初有效,但后来停止,
问题内容: 我只是在Linux服务器上试验PHP 。这是一个非常酷的功能,到目前为止,我真的很喜欢它。有没有办法查看命令运行时正在进行的实时输出? 例如,如果运行时正在ping通目标地址,则每次ping通时,都使用PHP显示结果吗?那可能吗? 我希望看到缓冲区正在运行时进行实时更新。也许不可能,但肯定会很好。 这是我正在尝试的代码,我尝试过的所有方式都始终在命令完成后显示结果。 我尝试过将零件循环
问题内容: 是否可以实时获取PL / SQL的输出?我有一个相当大的程序包,可以运行一个多小时,我想看看该程序包在特定时间的位置。 无论如何,我目前使用一个日志表来执行此操作,该表每次运行都充满了数百个日志描述,我很好奇这是否可行。 谢谢! 问题答案: 我不知道这是否正是您想要的,但是我使用dbms_application_info.set_module来查看我的包在哪里。 出现查询将向您显示该过