区块链技术博客
www.b2bchain.cn

在Swing中调用后台线程 – java程序员分享

本文介绍了在Swing中调用后台线程 – java程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

第一个代码:

import java.awt.*; import java.awt.event.*; import javax.swing.*;  public class cos {    public static int a;     private static JLabel labeler;     // public static Runnable r1;     private JFrame frame;     /**     * Launch the application.     */    public static void main(String[] args) {       a = 0;       EventQueue.invokeLater(new Runnable() {          public void run() {             try {                cos window = new cos();                window.frame.setVisible(true);             } catch (Exception e) {                e.printStackTrace();             }          }       });     }     /**     * Create the application.     */    public cos() {       initialize();    }     /**     * Initialize the contents of the frame.     */    public void initialize() {       frame = new JFrame();       frame.setBounds(100, 100, 205, 194);       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        JLabel lblTime = new JLabel("Time:");       frame.getContentPane().add(lblTime, BorderLayout.WEST);        final JLabel labeler = new JLabel("");       frame.getContentPane().add(labeler, BorderLayout.CENTER);        JButton btnNewButton = new JButton("New button");       btnNewButton.addActionListener(new ActionListener() {          Runnable r1 = new Runnable() {             public void run() {                while (a <= 10) {                   a = a + 1;                   labeler.setText(Integer.toString(a));                   try {                      Thread.sleep(1000);                   } catch (InterruptedException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                   }                }              }          };           public void actionPerformed(ActionEvent arg0) {             Thread threder = new Thread(r1);             threder.start();             // liczniczek bla = new liczniczek();           }       });       frame.getContentPane().add(btnNewButton, BorderLayout.SOUTH);     }     public void licznik() {       while (a < 60) {          a = a + 1;          labeler.setText(Integer.toString(a));          try {             Thread.sleep(1000);          } catch (InterruptedException e) {             // TODO Auto-generated catch block             e.printStackTrace();          }       }    } } 

现在我的问题。我想使用这样的代码:

             Runnable r1 = new Runnable(){                 public void run(){                            licznik();                  }             }; 

但这不起作用。我必须怎么做才能分隔此代码?对不起,我的英语不好

西兰

参考方案

在EDT期间切勿使用Thread#sleep(int),请确保只有该线程才可以正常工作(使用EDT阻止),

Runnable r1 = new Runnable(){    public void run(){        licznik();    } }; 

与调用普通licznik();是错误的一样,您必须用这种方式包装

Runnable r1 = new Runnable(){    public void run(){        labeler.setText(Integer.toString(a));        } }; 

但是没有Thread#sleep(int)同样,您有三个选择

1)将Thread更改为javax.swing.Timer

2)将Thread更改为Runnable#Thread,可以在其中使用Thread#sleep(int)进行延迟,但是输出到GUI必须是

Runnable r1 = new Runnable(){    public void run(){        labeler.setText(Integer.toString(a));        } }; 

3)使用SwingWorker,其中输出位于EDT中,您也可以使用Thread#sleep(int)

示例Thread#sleep(int) during EDT

put all together

编辑

不要使用保留字作为类,方法,变量,无论编程语言中的任何名称(表示cos
您的代码可以实现我在此处发布的所有三个选项,

我需要使用Java Swing的搜索框,如果单击任何建议,当输入字母时它将显示来自数据库的建议,它将执行一些操作。如果有可能在Java swing中,请提供源代码提前致谢 java大神给出的解决方案 您可以使用DefaultComboBoxModel,输出将是这样。Try this在此代码中,您将找到countries数组,因此您需要从数据库中获取此数组。

一,代码:tab_textArea_file.addTab(docLabel, null, scrollPane_textArea, null); 因此,情况是我有一个可供用户选择的文件列表。用户单击文件时,将读取文件的内容并将其加载到textArea中。 “ docLabel”(在上面的代码中)是应该更改为所选文件名的字符串,但并非如此。是否可以通过上面的…

这可能是一个广泛的问题,但我想知道单用户桌面应用程序通常在何处使用并发。您如何发现理想情况下(在设计阶段)并发问题?附注:从操作系统理论上来说,并发问题通常发生在无法共享资源(例如打印机)的情况下。不过,我仍然对在编程级别上可能发生的情况感到迷惑。 java大神给出的解决方案 Event Dispatch thread与其他逻辑之间的Swing中可能存在线程…

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

我正在尝试使JTextArea填充整个框架,因此它看起来有点像记事本或textedit。也可以有一个滚动窗格。提前致谢!编辑:JTextArea 参考方案 试试这个 – -import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTextField; public…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 在Swing中调用后台线程 – java程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们