我有一个使用参数的JFrame,然后将其发送到Java进程,并且有一个标签给出未运行或正在运行的状态,因此当调用按钮时,它会更改标签,然后使用该进程调用函数,进程正在命令行上调用MatLab可执行程序,问题是当进程功能不起作用时,标签会更新正常,但当它起作用时,标签将不会更新。我已经尝试过重绘和重新验证的所有组合,我也尝试过使用SwingUtilities.InvokeLater()
来调用更新测试或我正在调用的函数,或者两者都调用
这就是我设置标签的方式。
update = new JLabel();
update.setText("Status: Not Running");
这是调用更新的按钮。
run.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent w) {
update.setText("Status: Running");
update.revalidate();
update.repaint();
repaint();
revalidate();
DIP();
}
});
以防万一这是DIP功能
private void DIP() {
File ff = new File(outputFile + "\\Output_Data\\");
if (ff.isDirectory())
ff.delete();
File f = new File("resources/matlab/");
File fWindow = new File("resources\\matlab\\aaa\\for_redistribution_files_only\\");
Runtime r = Runtime.getRuntime();
String[] command = { "cmd", "/c", "aaa.exe", fSpace.getText(), sRes.getText(), tRes.getText(),
refFile,
outputFile, Integer.toString(numFiles), fileType };
ProcessBuilder pb = new ProcessBuilder();
pb.directory(fWindow);
pb.command(command);
System.out.println();
try {
Process p = pb.start();
try {
p.waitFor();
System.out.print(p.exitValue());
closeOut();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}