Exception try-and-catch语句中的代码未执行,有什么问题吗?

Exception try-and-catch语句中的代码未执行,有什么问题吗?,exception,jframe,try-catch,Exception,Jframe,Try Catch,我有以下简单的例子 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()

我有以下简单的例子

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(“Before”)行

            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)只是为了暂停一下,这样我就可以看到jtext字段中的“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");
        }

所以主要的问题是,textField.setText(“Before”);行没有被执行。

看起来您需要专注于Java的“事件调度线程”

请看这里: