Tag: swingworker

为什么SwingWorker意外停止?

我想用SwingWorker尝试一些想法,因为我没有太多使用它。 相反,我遇到了一个问题,我无法弄清楚出了什么问题。 这是一个简短的SSCCE来演示这个问题(我知道这里的人就像SSCCEs): import javax.swing.SwingUtilities; import javax.swing.SwingWorker; public class SwingWorkerTest { public static void main (String[] args) { SwingUtilities.invokeLater (new Runnable () { @Override public void run () { new MySwingWorker (500).execute (); new MySwingWorker (900).execute (); new MySwingWorker (1200).execute (); } }); } } class MySwingWorker extends SwingWorker { private int ms; public MySwingWorker […]

Swing Worker线程不并发

似乎当我实例化12个Swing Worker线程时,前六个开始完成它的任务,它完成AND然后最后六个开始并完成。 我正在寻找的行为是所有12个线程同时开始工作并同时完成。 我有以下内容: for (int i = 0; i < 12; i++ ) { myTask m = new Mytask(i, START); m.execute(); } myTask m将以0到100递增一个进度条,增量为25.我发现前六个线程开始递增的exception行为,它们以100结束,然后最后六个线程从0开始递增,然后结束。 是否存在可能具有的Swing Worker线程数量的限制因素?

来自SwingWorker的jProgressBar更新

我用来通过更新ProgressBar来监视长时间运行的任务。 长时间运行的任务当然是在Swingworker线程中执行的。 我过去经常编程: public class MySwingWorkerClass extends SwingWorker { private JProgressBar progressBar; public MySwingWorker(JProgressBar aProgressBar) { this.progressBar = aProgressBar; progressBar.setVisible(true); progressBar.setStringPainted(true); progressBar.setValue(0); } @Override public Void doInBackground() { //long running task loop { calculation(); progressBar.setValue(value); } return null; } @Override public void done() { progressBar.setValue(100); progressBar.setStringPainted(false); progressBar.setVisible(false); } } 但最近我发现我可以通过使用“setProgress”并定义属性更改并执行类似的操作来实现 public class MySwingWorkerClass extends SwingWorker […]

在没有JFrame冻结的情况下在Java中执行进程

如何在没有程序冻结的情况下在Java中执行进程? 我尝试过使用SwingWorker,但我还不太明白它是如何工作的。 还有其他方法我可以做到这一点吗? 我想在我的JDroidLib中使用这样的东西。 有关完整源代码,请查看GitHub: http : //github.com/Team-M4gkBeatz/JDroidLib 提前致谢! 编辑: 谢谢你的回答。 但是我有一个有几种方法的课(好吧,它不止一个课,但你明白我的观点); 我如何使用SwingWorker与这些进行交互? 这是其中一个类: /** * * @author Simon */ public abstract class Command extends SwingWorker { BufferedReader prReader = null; ProcessBuilder process = null; Process pr = null; Date timeNow = new Date(); String osName = System.getProperty(“os.name”); public void executeProcessNoReturn(String _process, String arg) throws […]

从结果集填充表时更改列的jtable类型

我有工作人员从结果集中填写jtable,如下所示; public class WorkerFillTable extends SwingWorker { private DefaultTableModel modeltable; public WorkerFillTable(DefaultTableModel modeltable) { this.modeltable = modeltable; } @Override protected DefaultTableModel doInBackground() throws Exception { ResultSet rs; Statement stmt; String query = “select Name,ID,Status,IsActive from current_conf\n” + “order by Name,ID”; Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); String connectionUrl = “jdbc:sqlserver://192.168.130.100;” + “databaseName=DBST;” + “user=” + “user1” + “;” + “password=” […]

使用jFreeChart的多个图形中的多个图形

我试图使用jFreechart生成两个图形,每个图形有12个图形(在jFreeChart中称为系列)。 然而,一些图表被简单地跳过了! 我知道我在这里有同步问题,并试图使用用户@trashgod 在这里提供给我的方法但是我失败了。 我知道我使用swingworker的方式是错误的 ! 我不知道如何解决它 每个图应包含10个平行水平直线的图。 正如您在附图中看到的那样,缺少一些线条。 这两个数字也必须相同(不是)。 在实践中,我将不得不在不同时间在我的应用程序的几个位置生成多个图形(每个图形之间的随机时间间隔甚至是各个图形的图形)任何帮助都将非常感谢 Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: This dataset already contains a series with the key Plot 11 at org.jfree.data.xy.XYSeriesCollection.addSeries(XYSeriesCollection.java:154) at swing.FastChart2$MySwingWorker.process(FastChart2.java:192) at javax.swing.SwingWorker$3.run(SwingWorker.java:414) at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832) at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842) at javax.swing.Timer.fireActionPerformed(Timer.java:312) at javax.swing.Timer$DoPostEvent.run(Timer.java:244) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) […]

如何使用SwingWorker?

朋友们,我正在开发一个java应用程序。 这是性能监测。 因为我在一个类中获取值并在另一个类中绘制图形。 我想使用swingworker来执行这两个类。 ResultSet rs; Connection conn = null; conn = (Connection)getMySqlConnection(); Statement st = conn.createStatement(); rs = st.executeQuery(“SHOW GLOBAL STATUS”); while(rs.next()) { Map_MySql.put(rs.getString(1), rs.getString(2)); } conn.close(); 上面的类用于收集服务器状态并将其存储在哈希映射中。 这个类称为“MySQLClass”。 System.out.println(“Graph Occur”); XYDataset Dataset; TimeSeries Series = new TimeSeries(“Random Data”); Second sec = new Second(); ChartPanel CPanel; if(Operation_Combo.getSelectedItem().toString() == “MySQL”) { if(MySQLClass.Map_MySql.get(“”+MainWindow.SelectedNode+””) == null) { […]

停止/取消SwingWorker线程?

我正试图找出如何在按下按钮时停止运行SwingWorker线程。 我一直在四处寻找,我在解决如何做到这一点时遇到了一些麻烦。 目前这就是我所拥有的: new MySwingWorkerClass(args).execute(); 我正在创建一个按钮,我想用它来停止线程: button = new JButton(“Stop”); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Stop the swing worker thread } }); 我已经环顾四周寻找答案,到目前为止我已经设法找到了取消方法。 我不明白如何使用它来阻止我的摇摆工作者。 我尝试了以下但它不起作用: SwingWorker.cancel(true);

如果没有自定义对话框面板中的Thread.sleep(),SwingWorker不会更新JProgressBar

我有一个SwingWorker类,它加载一个文本文件并将其切片到块进行进一步处理。 这是SwingWorker类: public class ConverterWorker extends SwingWorker { private final File f; private final JLabel label; public ConverterWorker(File f, JLabel label) { this.f = f; this.label = label; } @Override protected String doInBackground() throws Exception { NMTMain.convertableData = getDataSets(f); if(!NMTMain.convertableData.isEmpty()) { return “Done”; } else { publish(“Failed to load the file!”); return “Failed”; } } […]

WatchService和SwingWorker:如何正确地做到这一点?

WatchService听起来像是一个令人兴奋的想法…不幸的是,它似乎与教程/ api中的警告一样低,并不真正适合Swing事件模型(或者我错过了一些明显的,非零概率 从教程中的 WatchDir 示例中获取代码(只是为了处理单个目录),我基本上结束了 扩展SwingWorker 在构造函数中执行注册工作 把无限循环放在doInBackground中等待一个键 通过key.pollEvents()检索时发布每个WatchEvent 通过使用已删除/创建的文件作为newValue触发propertyChangeEvents来处理块 @SuppressWarnings(“unchecked”) public class FileWorker extends SwingWorker<Void, WatchEvent> { public static final String DELETED = “deletedFile”; public static final String CREATED = “createdFile”; private Path directory; private WatchService watcher; public FileWorker(File file) throws IOException { directory = file.toPath(); watcher = FileSystems.getDefault().newWatchService(); directory.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); } […]