Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从线程的运行实例中的jFrame访问元素_Java_Multithreading_Runnable - Fatal编程技术网

Java 从线程的运行实例中的jFrame访问元素

Java 从线程的运行实例中的jFrame访问元素,java,multithreading,runnable,Java,Multithreading,Runnable,我正在尝试制作一个应用程序,用于在线程的不同运行实例之间进行通信。我有一个jFrame,它有一个jTextField和一个jButton。在jtext字段中,我输入要运行的线程数,按下jButton后线程运行。每个线程都包含一个带有jButton的jFrame。因此,如果我在jTextField中键入3,然后按OK,会弹出三个不同的jFrame,它们有自己的jButton。如果我在线程的一个jframe中按下jButton,jButton将设置为disabled(setEnabled(false

我正在尝试制作一个应用程序,用于在线程的不同运行实例之间进行通信。我有一个jFrame,它有一个jTextField和一个jButton。在jtext字段中,我输入要运行的线程数,按下jButton后线程运行。每个线程都包含一个带有jButton的jFrame。因此,如果我在jTextField中键入3,然后按OK,会弹出三个不同的jFrame,它们有自己的jButton。如果我在线程的一个jframe中按下jButton,jButton将设置为disabled(
setEnabled(false)
)。当按下jFrame时,线程中的每个jFrame按钮都会发生这种情况,但最后一个jFrame中的一个按钮仍然没有按下

这是线程的窗口类:

public class Window extends JFrame implements Runnable {
    JFrame jr;
    JButton bt;

    public void run() {
        jr=new JFrame();
        bt=new jButton();
        bt.setTitle("Press Me");
        jr.setLayout(new FlowLayout());
        jr.add(bt);
        bt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                bt.setEnabled(false);
            }
        });
        jr.setVisible(true);
    }
}
现在,我就是这样运行这个线程的多个实例的
i
是从jtext字段中获取的线程实例数:

(    int i=Integer.parseInt(jTextField1.gettext())  )

for (int a=0;a<i;a++) {
    Runnable thr=new Window(a);
    executor.execute(thr);
}
(int i=Integer.parseInt(jTextField1.gettext())

对于(inta=0;a这是主类,它现在100%工作

        import java.awt.Color;
    import java.awt.Image;
    import java.io.IOException;
    import java.util.Random;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;

    /**
     *
     * @author oliver
     */
    public class Hauptklasse extends javax.swing.JFrame {
    static int i = 0;
    static Random r;
    static boolean OkApasat=false;
    static int c;
    public static Fereastra[] thread;


    public Hauptklasse() throws IOException {
        initComponents();
        Image logo;
        logo = ImageIO.read(getClass().getResource("resurse/logo.png"));
        jLabel4.setIcon(new ImageIcon(logo));
        jLabel4.setVisible(true);
        setLocation(200,100);
        jPanel1.setBackground(Color.cyan);
        jTextField1.setEditable(false);
        jButton2.setEnabled(false);
        r=new Random();




    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton2 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setPreferredSize(new java.awt.Dimension(549, 448));

        jButton1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButton1.setText("Pornire");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextArea1.setBackground(new java.awt.Color(0, 0, 0));
        jTextArea1.setColumns(20);
        jTextArea1.setFont(new java.awt.Font("Andale Mono", 0, 11)); // NOI18N
        jTextArea1.setForeground(new java.awt.Color(255, 255, 255));
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel1.setText("Numar maxim de ferestre");

        jButton2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButton2.setText("OK");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(28, 28, 28)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(44, 44, 44)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButton2)))
                .addContainerGap(31, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jButton1)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(1, 1, 1)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jButton2))
                        .addGap(22, 22, 22)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 561, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         jTextField1.setEditable(true);
         jButton1.setEnabled(false);
         jButton2.setEnabled(true);
         jTextArea1.append("\n Welcome! :)");
         jTextArea1.append("\n The following app tests the communication between threads");
         jTextArea1.append("\n Please enter maximum number of windows to be opened");



    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

       OkApasat=true;


    }                                        

    /**
     * @param args the command line arguments
     * @throws java.io.IOException
     */
    public static void main(String args[]) throws IOException {


        final Hauptklasse main1 = new Hauptklasse();


        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                main1.setVisible(true);

            }
        });

        while (true){
            if (OkApasat==true){
                if (Integer.parseInt(jTextField1.getText())>=3){
                   i= (Integer.parseInt(jTextField1.getText()));
                   main1.jTextArea1.append("\n"+i+" windows opened");
                   Fereastra[] thr=new Fereastra[i];

                    for (c = 0; c < i; c++) {
                        thr[c]=new Fereastra(thr);
                        thr[c].run();

                    }

                  OkApasat=false;
                   main1.jButton2.setEnabled(false);
                   main1.jTextField1.setEditable(false);


            }
                else jTextArea1.append("\n Wrong maximum number of windows-must be at least 3");

                OkApasat=false;
        }

            try {
                Thread.sleep(10);
            } catch (InterruptedException ex) {
                Logger.getLogger(Hauptklasse.class.getName()).log(Level.SEVERE, null, ex);
            }



    }

    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    public static javax.swing.JTextArea jTextArea1;
    public static javax.swing.JTextField jTextField1;
    // End of variables declaration                   

    }
导入java.awt.Color;
导入java.awt.Image;
导入java.io.IOException;
导入java.util.Random;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.imageio.imageio;
导入javax.swing.ImageIcon;
/**
*
*@作者奥利弗
*/
公共类Hauptklasse扩展了javax.swing.JFrame{
静态int i=0;
静态随机r;
静态布尔值OkApasat=false;
静态int-c;
公共静态Fereastra[]线程;
public Hauptklasse()引发IOException{
初始化组件();
形象标识;
logo=ImageIO.read(getClass().getResource(“resurse/logo.png”);
jLabel4.设置图标(新图像图标(徽标));
jLabel4.setVisible(真);
设定位置(200100);
jPanel1.背景色(颜色:青色);
jTextField1.setEditable(false);
jButton2.setEnabled(false);
r=新随机数();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//                           
私有组件(){
jPanel1=newjavax.swing.JPanel();
jButton1=newjavax.swing.JButton();
jScrollPane1=newjavax.swing.JScrollPane();
jTextArea1=newjavax.swing.JTextArea();
jLabel1=newjavax.swing.JLabel();
jTextField1=newjavax.swing.JTextField();
jButton2=newjavax.swing.JButton();
jLabel4=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(新java.awt.Dimension(549448));
jButton1.setFont(新的java.awt.Font(“Tahoma”,1,11));//NOI18N
jButton1.setText(“色情”);
jButton1.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton1ActionPerformed(evt);
}
});
jTextArea1.setBackground(新java.awt.Color(0,0,0));
jTextArea1.设置列(20);
jTextArea1.setFont(新的java.awt.Font(“Andale Mono”,0,11));//NOI18N
jTextArea1.setForeground(新java.awt.Color(255、255、255));
jTextArea1.设置行(5);
jScrollPane1.setViewportView(jTextArea1);
jLabel1.setFont(新的java.awt.Font(“Tahoma”,1,12));//NOI18N
jLabel1.setText(“Numar maxim de ferestre”);
jButton2.setFont(新的java.awt.Font(“Tahoma”,1,11));//NOI18N
jButton2.setText(“OK”);
jButton2.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel4,javax.swing.GroupLayout.PREFERRED\u SIZE,106,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addGap(28,28,28)
.addComponent(jButton1,javax.swing.GroupLayout.PREFERRED_SIZE,130,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jpanellayout.createSequentialGroup()
.addGap(44,44,44)
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,486,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jpanellayout.createSequentialGroup()
.addGap(18,18,18)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,63,javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18,18,18)
.addComponent(jButton2)))
.addContainerGap(31,简称最大值))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGr
    import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 *
 * @author oliver
 */
public class Fereastra extends JFrame implements Runnable {

public JFrame jr;
public JButton bt;
public JLabel l;
public JLabel l2;
public Fereastra[] thread;
public boolean deblocat = true;

public Fereastra(Fereastra[] thread) {
    this.thread = thread;
    jr = new JFrame();
    jr.setSize(250, 250);
    jr.setLayout(new FlowLayout());
    bt = new JButton();
    jr.add(bt);
    bt.setText("OK");
    bt.setBackground(Color.cyan);
    l2 = new JLabel();
    l2.setText("Buton activ");
    jr.add(l2);
    jr.setVisible(true);

}

public void run() {

    bt.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            bt.setEnabled(false);

            deblocat = true;

            for (int c = 0; c < Hauptklasse.i; c++) {

                if (thread[c] != null && thread[c].bt.isEnabled()) {
                    deblocat = false;
                    break;
                }

            }

            if (deblocat == true) {
                for (int c = 0; c < Hauptklasse.i; c++) {
                    if (thread[c] != null) {
                        thread[c].bt.setEnabled(true);
                    }
                }
            }

        }
    });

}

}
package concurenta;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 *
 * @author oliver
 */
public class Fereastra extends JFrame implements Runnable {

public static JFrame jr;
public static JButton bt;
public static JLabel l;
public static JLabel l2;
public static Fereastra[] thread;
public boolean deblocat = true;

public Fereastra(Fereastra[] thread) {
    this.thread = thread;
    jr = new JFrame();
    jr.setSize(250, 250);
    jr.setLayout(new FlowLayout());
    bt = new JButton();
    jr.add(bt);
    bt.setText("OK");
    bt.setBackground(Color.cyan);
    l2 = new JLabel();
    l2.setText("Buton activ");
    jr.add(l2);
    jr.setVisible(true);

}

public void run() {

    bt.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            bt.setEnabled(false);

            deblocat = true;

            for (int c = 0; c < Hauptklasse.i; c++) {

                if (thread[c] != null && thread[c].bt.isEnabled()) {
                    deblocat = false;
                    break;
                }

            }

            if (deblocat == true) {
                for (int c = 0; c < Hauptklasse.i; c++) {
                    if (thread[c] != null) {
                        thread[c].bt.setEnabled(true);
                    }
                }
            }

        }
    });

}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package concurenta;

import java.awt.Color;
import java.awt.Image;
import java.io.IOException;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

/**
 *
 * @author oliver
 */
public class Hauptklasse extends javax.swing.JFrame {
static int i = 0;
static Random r;
static boolean OkApasat=false;
static int c;
public static Fereastra[] thread;


public Hauptklasse() throws IOException {
    initComponents();
    Image logo;
    logo = ImageIO.read(getClass().getResource("resurse/logo.png"));
    jLabel4.setIcon(new ImageIcon(logo));
    jLabel4.setVisible(true);
    setLocation(200,100);
    jPanel1.setBackground(Color.cyan);
    jTextField1.setEditable(false);
    jButton2.setEnabled(false);
    r=new Random();




}


/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jButton1 = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();
    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jButton2 = new javax.swing.JButton();
    jLabel4 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jPanel1.setPreferredSize(new java.awt.Dimension(549, 448));

    jButton1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jButton1.setText("Pornire");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    jTextArea1.setBackground(new java.awt.Color(0, 0, 0));
    jTextArea1.setColumns(20);
    jTextArea1.setFont(new java.awt.Font("Andale Mono", 0, 11)); // NOI18N
    jTextArea1.setForeground(new java.awt.Color(255, 255, 255));
    jTextArea1.setRows(5);
    jScrollPane1.setViewportView(jTextArea1);

    jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel1.setText("Numar maxim de ferestre");

    jButton2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
    jButton2.setText("OK");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton2ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(28, 28, 28)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(44, 44, 44)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(18, 18, 18)
                    .addComponent(jLabel1)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addComponent(jButton2)))
            .addContainerGap(31, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jButton1)
                    .addGap(0, 0, Short.MAX_VALUE))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(1, 1, 1)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel1)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton2))
                    .addGap(22, 22, 22)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)))
            .addContainerGap())
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 561, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     jTextField1.setEditable(true);
     jButton1.setEnabled(false);
     jButton2.setEnabled(true);
     jTextArea1.append("\n Welcome! :)");
     jTextArea1.append("\n The following app tests the communication between threads");
     jTextArea1.append("\n Please enter maximum number of windows to be opened");



}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   OkApasat=true;


}                                        

/**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
public static void main(String args[]) throws IOException {


    final Hauptklasse main1 = new Hauptklasse();


    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            main1.setVisible(true);

        }
    });

    while (true){
        if (OkApasat==true){
            if (Integer.parseInt(jTextField1.getText())>=3){
               i= (int) (Math.random() * (Integer.parseInt(jTextField1.getText()) - 3)) + 3; 

               main1.jTextArea1.append("\n"+i+" windows opened");
               Fereastra[] thr=new Fereastra[i];

                for (c = 0; c < i; c++) {
                    thr[c]=new Fereastra(thr);
                    thr[c].run();

                }

              OkApasat=false;
               main1.jButton2.setEnabled(false);
               main1.jTextField1.setEditable(false);


        }
            else jTextArea1.append("\n Wrong maximum number of windows-must be at least 3");

            OkApasat=false;
    }

        try {
            Thread.sleep(10);
        } catch (InterruptedException ex) {
            Logger.getLogger(Hauptklasse.class.getName()).log(Level.SEVERE, null, ex);
        }



}

}

// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
public static javax.swing.JTextArea jTextArea1;
public static javax.swing.JTextField jTextField1;
// End of variables declaration