Ok, GUI가없는 응용 프로그램과 GUI가있는 응용 프로그램의 차이를 많이 테스트하고 비교 한 후. 내 문제에 대한 해결책을 찾았습니다. 응용 프로그램의 시작부터 방법 초기화 GUI를 실행하지 않고 응용 프로그램으로
는
import matlabFunction.*;
public static void main(String[] args) {
matlabFunction test = new matlabFunction(); test.runFunction(1, lstABC.toArray());
}
(하나 개의 스레드 만이있다) 그러나 GUI 내 코드에서 나는 (JFrame에 내에서 init 메소드를 실행 main()은 EDT 안에있는
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
new main();
} catch (Exception p) {
}
}
});
}
위의 방법으로 matlab 메소드를 초기화 할 때 오류가 발생합니다. 하지만 아래와 같이 init 메소드를 호출하는 방식을 변경하면 오류가 해결됩니다.
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
matlabFunction test = new matlabFunction();
new main(test);
} catch (Exception p) {
}
}
});
}
그래서, 나는 내 문제에 대한 이유는 응용 프로그램을 시작합니다 "첫 번째"스레드에서 init 메소드를 호출하지 않습니다 생각합니다.
분명히하기 위해 ... 당신은'modem.pskmod' 함수를 호출하고, * GUI를 사용하지 않으며, 잘 작동하는 하나의 배포 된 응용 프로그램을 가지고 있습니다. 그런 다음'modem.pskmod' 함수를 호출하는 또 다른 응용 프로그램을 가지고 있습니다. * GUI는 GUI를 사용하고 작동하지 않습니다 (위의 오류를 제공함). 이 올바른지? – gnovice
네, 맞습니다. –