Пример использования потоков для вывода данных в форму - Java

Узнай цену своей работы

Формулировка задачи:

Понимаю что в инете достаточно информации по потокам, но мне трудно разобраться по ним... намного проще разобраться по примеру использования потоков с формой. Нужен простой пример: есть форма с кнопкой и jTextArea, в которую по нажатию кнопки вызывается функция, которая начинает без остановки(например в цикле while(true)) выводить данные с использованием потока, чтобы форма не зависала при выводе данных. Думаю знатокам труда это не составит, поэтому просьба написать простой пример. Заранее спасибо. Ниже скинул код обычного проекта с кнопкой и jTextArea. Просьба написать пример с использованием этого кода, если возможно.
Листинг программы
  1. public class newJFrame extends javax.swing.JFrame {
  2. public newJFrame() {
  3. initComponents();
  4. }
  5. @SuppressWarnings("unchecked")
  6. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  7. private void initComponents() {
  8. jButton1 = new javax.swing.JButton();
  9. jScrollPane1 = new javax.swing.JScrollPane();
  10. jTextArea1 = new javax.swing.JTextArea();
  11. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  12. jButton1.setText("jButton1");
  13. jButton1.addActionListener(new java.awt.event.ActionListener() {
  14. public void actionPerformed(java.awt.event.ActionEvent evt) {
  15. jButton1ActionPerformed(evt);
  16. }
  17. });
  18. jTextArea1.setColumns(20);
  19. jTextArea1.setRows(5);
  20. jScrollPane1.setViewportView(jTextArea1);
  21. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  22. getContentPane().setLayout(layout);
  23. layout.setHorizontalGroup(
  24. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  25. .addGroup(layout.createSequentialGroup()
  26. .addComponent(jButton1)
  27. .addGap(18, 18, 18)
  28. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE)
  29. .addContainerGap())
  30. );
  31. layout.setVerticalGroup(
  32. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  33. .addGroup(layout.createSequentialGroup()
  34. .addContainerGap()
  35. .addComponent(jButton1)
  36. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  37. .addGroup(layout.createSequentialGroup()
  38. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 289, Short.MAX_VALUE)
  39. .addContainerGap())
  40. );
  41. pack();
  42. }
  43. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  44. printData();
  45. }
  46. public void printData(){
  47. while (true) {
  48. jTextArea1.append("example text");
  49. }
  50. }
  51. public static void main(String args[]) {
  52. try {
  53. for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  54. if ("Nimbus".equals(info.getName())) {
  55. javax.swing.UIManager.setLookAndFeel(info.getClassName());
  56. break;
  57. }
  58. }
  59. } catch (ClassNotFoundException ex) {
  60. java.util.logging.Logger.getLogger(newJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  61. } catch (InstantiationException ex) {
  62. java.util.logging.Logger.getLogger(newJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  63. } catch (IllegalAccessException ex) {
  64. java.util.logging.Logger.getLogger(newJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  65. } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  66. java.util.logging.Logger.getLogger(newJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  67. }
  68. //</editor-fold>
  69. /* Create and display the form */
  70. java.awt.EventQueue.invokeLater(new Runnable() {
  71. public void run() {
  72. new newJFrame().setVisible(true);
  73. }
  74. });
  75. }
  76. // Variables declaration - do not modify
  77. private javax.swing.JButton jButton1;
  78. private javax.swing.JScrollPane jScrollPane1;
  79. private javax.swing.JTextArea jTextArea1;
  80. // End of variables declaration
  81. }

Решение задачи: «Пример использования потоков для вывода данных в форму»

textual
Листинг программы
  1. private class LoadData extends Thread{
  2. @Override
  3. public void run(){
  4. for(long l : list){
  5.       JTextArea1.append(String.valueOf(l) + "\n");
  6.            try{
  7.                 Thread.sleep(10);
  8.         } catch(InterruptedException ex){}
  9.     }
  10.   }
  11. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы