주 응용 프로그램 사용자 인터페이스를 닫으려고하지만 응용 프로그램을 시작한 내 main() 함수에서 코드를 실행하고 있습니다. 지금 당장 가지고있는 문제는 맥에있다. 비록 윈도우가 보이지 않더라도 프로그램 이름은 맥 메뉴 막대에 그대로 남아있다.응용 프로그램 UI를 닫지 만 main() 코드를 계속 실행하십시오.
그래서 기본적으로 내가 가지고있는 응용 프로그램을 종료 할 것 코드 :
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
//System.exit(0);
this.setVisible(false);
// Do something here to finish closing application.
}
같은 응용 프로그램이 보이는 시작하는 주요 기능 : 내가하는 System.exit를 사용한 경우
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// NewApplication is a javax.swing.JFrame
new NewApplication().setVisible(true);
}
});
while (true) {
// Watch for user to relaunch UI and do lots of other tasks.
}
}
(0) 전체 JVM을 완전히 정지시키고 while 루프에서 물건을 실행하지 않게됩니다. 주 애플리케이션 UI를 종료하고 메뉴 막대에 표시하는 것을 중지하지만 while 루프 물건을 실행하는 방법을 알아낼 수 없습니다.
내가 이것을하려는 이유는 지속적으로 실행될 필요가 있고 때로는 사용자가 실행중인 항목과 상호 작용하는 사용자 인터페이스를 실행해야하기 때문입니다. while 루프 내부의 요소는 (다른 함수 중에서) 사용자 인터페이스를 다시 시작하려고 시도하는지 확인하고 다시로드합니다. 하나의 옵션은 연속적으로 실행되는 하나의 프로그램을 만들고 사용자 인터페이스와 비 UI 프로그램간에 대화하기 위해 프로세스 간 통신을 사용하는 것이지만 많은 양의 데이터를 앞뒤로 전달해야 해당 옵션이 마음에 들지 않습니다.
http://stackoverflow.com/a/1235994/1291150 원하는 것을 찾았습니까? –
setDefaultCloseOperation (JFrame.DoNothing) const 이름을 기억하지 못합니다. – TacB0sS
Java 프로그램이 OSX 창 관리자와 상호 작용하는 방식을 제어 할 수있는 Apple Java Extensions라는 API가 있습니다. 여전히 존재하지만 애플은이를 비난하고 개발자 사이트에서 문서의 모든 흔적을 제거했다. 그것에 대해 배울 수있는 가장 좋은 방법은 Orange Extensions와 같은 오픈 소스 스텁 라이브러리를 연구하는 것입니다. –