2013-03-08 10 views
0

У меня есть следующий простой пример;Код внутри try и catch statement не выполняется, что не так?

public class TES extends JFrame { 

private JPanel contentPane; 
private JTextField textField; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       TES frame = new TES(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public TES() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 100, 100); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 

    textField = new JTextField(); 
    textField.setColumns(10); 

    JButton btnNewButton = new JButton("New button"); 
    btnNewButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 


      try { 
       System.out.println("Before "); 
       textField.setText("Before"); 
       Thread.sleep(4000); 
      } catch (InterruptedException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      textField.setText("After"); 
     } 
    }); 



    GroupLayout gl_contentPane = new GroupLayout(contentPane); 
    gl_contentPane.setHorizontalGroup(
     gl_contentPane.createParallelGroup(Alignment.TRAILING) 
      .addGroup(gl_contentPane.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(btnNewButton) 
       .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
      .addGroup(gl_contentPane.createSequentialGroup() 
       .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) 
       .addContainerGap()) 
    ); 
    gl_contentPane.setVerticalGroup(
     gl_contentPane.createParallelGroup(Alignment.LEADING) 
      .addGroup(gl_contentPane.createSequentialGroup() 
       .addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(ComponentPlacement.RELATED, 61, Short.MAX_VALUE) 
       .addComponent(btnNewButton) 
       .addContainerGap()) 
    ); 
    contentPane.setLayout(gl_contentPane); 


} 

}

В textField.settext ("До") линия не выполняется.

  try { 
       System.out.println("Before "); 
       textField.setText("Before"); 
       Thread.sleep(4000); 
      } catch (InterruptedException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      textField.setText("After"); 
     } 

Выполняется линия System.out.println («Before»). Я помещаю thread.sleep (4000) только для паузы, поэтому я вижу в «JtextField» тексты «Before» и «After». В моем исходном коде я запускаю другой класс в этом месте;

        try { 
       System.out.println("Before "); 
       textField.setText("Before"); 
       Functions.dbSet(); 
      } catch (InterruptedException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      textField.setText("After"); 
     } 

SO главная проблема, textField.setText («Before»); строка не выполняется.

ответ