Tag: swingworker

基于服务器的SwingWorker不会停止

我有一个布尔变量来控制服务器的执行(启动/停止): private boolean ecoute = true; 这是我的class级: sw=new SwingWorker (){ protected String doInBackground() throws Exception { try { server = new ServerSocket(Integer.parseInt(port.getText())); String str1=”waiting for connexion..”; String str2=”Connexion ok”; log.append(str1+”\n”); PrintWriter out=null; BufferedReader in=null; Socket socClient=null; while(ecoute){ socClient = server.accept(); log.append(str2+”\n”); in = new BufferedReader( new InputStreamReader(socClient.getInputStream()) ); out = new PrintWriter( new BufferedWriter( new […]

暂停和恢复SwingWorker.doInBackground()

我有一个基本的Swing UI,只有一个标记为“Play”的按钮。 按下按钮时,标签变为“暂停”。 按下按钮后,它会变为“恢复”。 在“Play”上我实例化并执行SwingWorker。 我想要的是能够暂停这个线程(不取消它)并根据上述按钮按下恢复它。 但是,我不想在doInBackground()中使用Thread.sleep()。 这似乎有点hackish。 有没有办法让运行doInBackground的线程阻塞?

我如何使用swingworker类将文本附加到textarea?

我想在循环中使用swingworkerclass在java中追加文本。 对于前: while(true) { mytextarea.append(“sometext”); if(some_condition) {break;} } 我想和swingworker一起工作,因为我想看看textarea上的每一个uptade。 对于这段代码,我只看到我的过程完成时的更新。 我不想在另一种情况下使用swingworker样品。 请在这里给我一些代码。谢谢。

SwingUtilities.invokeLater与SwingWorker 之间的区别?

有什么区别: //Some code, takes a bit of time to process (new SomeJFrame()).setVisible(true); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { (new SomeJWindow()).start();//Start a new thread } }); 和: class doGraphics extends SwingWorker { @Override public Void doInBackground() { //Some code, takes a bit of time to process (new SomeJFrame()).setVisible(true); return null; } @Override protected void […]

基本不确定JProgress栏用法

我只是想在进行长时间下载时在框架的左下角设置一个不确定的JProgressBar动画。 我看了很多教程,其中没有一个对我很清楚。 我只是想在后台下载文件时让它具有动画效果。 我尝试过这种方式的每一种方式,都不会在下载完成之前为进度条设置动画。 我需要帮助知道下载()调用的位置。 class MyFunClass extends JFrame { JProgressBar progressBar = new JProgressBar(); public void buttonClicked() { progressBar.setVisible(true); progressBar.setIndeterminate(true); SwingUtilities.invokeLater(new Runnable() { public void run() { progressBar.setIndeterminate(true); progressBar.setVisible(true); // Do I do my download() in here?? }}); // Do download() here??? progressBar.setVisible(false); } } 提前致谢! 解 编辑:对于那些将来遇到类似问题的人来说,这是基本问题的基本解决方案。 这不是我的代码,而是一般草图。 在buttonClicked()里面: public void buttonClicked() { […]

复制目录和文件时需要使用JProgress栏来衡量进度

我有以下代码来复制目录和文件,但不知道在哪里测量进度。 有人可以帮忙吗 至于我在哪里可以测量复制了多少并在JProgress栏中显示它 public static void copy(File src, File dest) throws IOException{ if(src.isDirectory()){ if(!dest.exists()){ //checking whether destination directory exisits dest.mkdir(); System.out.println(“Directory copied from ” + src + ” to ” + dest); } String files[] = src.list(); for (String file : files) { File srcFile = new File(src, file); File destFile = new File(dest, file); […]

如何从SwingWorker类返回值并在其他类中使用并在进程完成时启用MenuItem?

我正在使用SwingWorker类使进程在另一个线程中运行。 我想要的是,一旦这个线程完成处理,它应该返回一个String ,它也应该启用一个JMenuItem 。 我在SwingWorker类中使用done()方法来启用JMenuItem但是我收到了NullPinterException 。 doInBackground()方法返回一个我想在主GUI类中访问的String – GUIMain.java ,它存在于同一个包中。 我该怎么做? 我看到很多实现done()或onPostExecute()方法的例子,但我想我在某个地方出错了。 这是我实现的代码: public class GUIMain extends JFrame implements ActionListener, FocusListener, ItemListener, MouseListener, MouseMotionListener { private JMenuBar menuBar; // Defined a menuBar item private JMenu recalibrationMenu; // Define the recalibration menu item private JMenuItem CGMenuItem; private JMenuItem TGMenuItem; private JMenu viewResultsMenu; // Define the View […]

获取Java ProgressMonitor的取消事件

我有一个ProgressMonitor pm和一个SwingWorker sw 。 我想在pm按下cancel按钮pm取消SwingWorker。 我想这不应该太难,我读了一些关于SwingWorker和ProgressMonitor的教程,但是我无法让它工作。 final ProgressMonitor pm = new ProgressMonitor(frame, “checking”, “…”, 0, 100); final SwingWorker sw = new SwingWorker() { protected Object doInBackground() throws Exception { doSomethingAndUpdateProgress(); } }; sw.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if(evt.getPropertyName().equals(“progress”)) { updateProgress(); } if(pm.isCanceled()) { cancelAction(); } if(pm.isDone()) { doneAction(); } } }); sw.execute(); […]

用SwingWorker打开JDialog?

我有一个使用JPA的项目J2SE。 在一些JDialogs中,我返回getResultList()并在类的构造函数中填充JTable,JComboBox,JList等。 因此,当我为这些对话框创建任何实例时,有时会很慢。 我认为使用SwingWorker和JProgressbar并创建一个(加载)打开JDialogs是一个很好的解决方案,但我不知道该怎么做。 我正在尝试这个。 // JProgressbar progress = new JProgressBar(); //custommer dialog JDialog custommer = new JDialog(); //here slow because I have List and others lists custommer.setModal(true); private void openDialogs(JDialog dialog){ progress.setVisible(true); progress.setIndeterminate(true); SwingWorker sw = new SwingWorker(){ protected Object doInBackground(){ //opening dialog dialog.setVisible(true); return null; } } //after opened protected void done(){ progress.setVisible(false); […]

SwingWorker:什么时候被称为done方法?

SwingWorker:的done()方法的Javadoc SwingWorker: 在doInBackground方法完成后在Event Dispatch Thread上执行。 我已经找到了在取消工人的情况下不是这样的线索。 在每种情况下都会调用Done (正常终止或取消)但在cancelled它不会排入 EDT,因为正常终止时会发生这种情况。 在取消SwingWorker的情况下调用done时是否有更精确的分析? 澄清:这个问题不在于如何cancel SwingWorker 。 这里假设SwingWorker以正确的方式被取消。 而且当它们应该完成时,它不是关于线程仍在工作。