在JButton执行

时间:2015-05-19 20:52:07

标签: java swing jtextfield

我是Swing的新手,要跟我说话。我正在使用JTextField在进程运行时显示状态消息。单击JButton时,该过程开始。在操作中,我想在进程运行时多次更改JTextField值,以便用户知道发生了什么。问题是,在按钮调用的方法完成之前,JTextField值不会更新。因此,实际只显示最后一条消息。

以下是一些代码:

我的按钮:

JButton runButton = new JButton("Run Test");
runButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent b) {
            changeProgressText("Progress: Running test script...");
            runTest();
}});

我的runTest()方法:

public void runTest() {
    int numRows = table.getRowCount();
    javax.swing.table.TableModel model = table.getModel();

    // Loop through the table values and execute the web service
    try {
        for (int i=0; i < numRows; i++) {
            if (model.getValueAt(i, 2) != null) {
                if (model.getValueAt(i, 3) != null) {
                    changeProgressText("Progress: Executing " + model.getValueAt(i, 2) + model.getValueAt(i, 3));
                    Thread.sleep(500);
                } else {
                    changeProgressText("Progress: Executing " + model.getValueAt(i, 2));
                    Thread.sleep(500);
                }
            }
        }
    } catch (Exception e) 
    {
        System.out.println(e.getMessage());
    }
    changeProgressText("Progress: Complete");
}

public void changeProgressText(String textValue) {
    progressText.setText(textValue);
    progressText.repaint();
    progressText.revalidate();  
}

注意:我正在使用“sleep(500)”,因此消息之间存在延迟,因此我可以看到它们是否显示。显示的唯一消息是“进度:完成”。

0 个答案:

没有答案