Я столкнулся с проблемой паузы JAVA качели GUI - PullRequest
0 голосов
/ 06 августа 2020

# Отредактировано # ниже - часть объявления

class test extends JFrame implements ActionListener
{

     JTextField jtfs[]=new JTextField[7];
     JButton jb =new JButton("add");
     JPanel text=new JPanel();
     String teststring[]={"hello","welcome","to","this","world"};
     int i=0;
     public test()
     {       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             setSize(500,500);
             setLayout(new GridLayout(1,2));
             text.setLayout(new GridLayout(5,1));
    
             for(int i=0;i<=teststring.length;i++)
             {
                 jtfs[i]=new JTextField(" ");
                 text.add(jtfs[i]);
             }
             add(text);
             add(jb);
             jb.addActionListener(this);
             setVisible(true);

      }

проблема начинается здесь, мне нужна помощь в части ниже

      public void actionPerformed(ActionEvent aa)
      {   
                  if(aa.getSource()==jb)
                  {
                    for(int i=0;i<=teststring.length;i++)
                    {  
                       try{
                              jtfs[i].setText(teststring[i]);
                              jtfs[i].setForeground(Color.RED);
            
                       if(i!=0)
                       {   jtfs[i-1].setForeground(Color.RED);
                           jtfs[i-1].setBackground(Color.BLACK);
                       }
            /*here is my code i have tried
            code has to be modified here
            Thread.sleep(1000);
            */
            

                      }
             catch(Exception ae)
             {
                     jtfs[teststring.length].setText("More than limit stop adding");
                     jtfs[teststring.length].setForeground(Color.RED);
             }
           }
         }
     }
     public static void main(String []args)
     {
             new test();
     }

}

Когда я пробовал Thread .sleep (1000), программа GUI зависает и отображает только результирующий вывод, этот сон не может отображать промежуточные изменения во время сна.

Я думаю, что не могу использовать класс Timer, поэтому есть другой способ решить эту проблему, чтобы я мог визуализировать изменения.

примечание: я упростил свою программу только для одного случая, есть много случаев, поэтому использование класса Timer не может быть решением, поскольку программа не выполняется рекурсивно

...