我是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)”,因此消息之间存在延迟,因此我可以看到它们是否显示。显示的唯一消息是“进度:完成”。