2015-01-19 3 views
0

사용자가 문서를 만들 수있는 Java 응용 프로그램을 개발 중입니다. 이 프로그램은 사용자가 프로그램을 실행할 때 나타나는 프레임의 닫기 버튼을 클릭 할 때 모든 문서를 닫는 것을 제외하고는 정상적으로 작동합니다.Java 응용 프로그램에서 새 문서 만들기

내가 원하는 동작은 MS Word와 유사합니다. 새 Word 문서 1을 열면 새 문서 2,3,4 등을 열 수도 있습니다. 사용자가 문서 1을 닫으면 다른 문서도 닫히지 않습니다. 그러나, 신청서에 문서 1을 닫을 때 모든 최신 문서가 닫힙니다.

내 응용 프로그램에서 문서 1을 닫으면 main(String [] args) 메서드가 종료 될 수 있기 때문에 이것이 원인이라는 것을 알고 있습니다.

아래는 사용자가 새 문서 버튼을 클릭 할 때 실행되는 코드입니다.

public void actionPerformed(ActionEvent e) { 
    if(count==0){ 
    if(e.getSource().equals(QuotPane.this.newFile)){ 
     tablePane=new JTabbedPane();//I have tried to add tabs to the pane but it was overriding the old document 
     QuotPane.this.createTablePane(); 
     tablePane.addTab("New Qout", tablePanel); 
     frame.add(tablePane,BorderLayout.CENTER); 
     count ++; 
     } 
    }else if(count>0) 
    { 
    new QuotPane();//creatint a new document here 
    }} 

어떻게하면 MS Word에서 작동되도록 할 수 있습니까?

+0

만들고있는 새 개체로 아무 것도하지 않는 특별한 이유가 있습니까? 나는 당신이 이들의 목록을 유지하는 시나리오를 상상할 것입니다. – Makoto

답변

-2

다른 문서를 열어 두려면 문서 당 새 스레드를 만들어보십시오. 그런 다음 main() 메서드가 모든 스레드가 종료되기 전에 종료 될 때까지 기다리는 것이 좋습니다.

+0

스레드가이 컨텍스트에서 의미가있는 이유를 설명하는 마음? – Makoto

+0

'MSWord와 같이 작동하게하려면'각 문서마다 별도의 창을 여는 것이 가장 좋습니다. 스레드가 문서/창을 처리하도록합니다. 모든 스레드가 종료 된 후에 만 ​​main()을 종료하십시오 (문서가 닫힐 때 스레드가 종료 됨). –

1

자바에서 'mutliple document interface'(mdi)를 수행하는 가장 좋은 방법은 JDesktopPane을 사용하는 것입니다. 오라클은 이것을 '내부 프레임'이라고 부릅니다. 그 목적을 위해 설계되었습니다.
그물에는 많은 설명서가 있습니다 (여기를 참조하십시오 : http://docs.oracle.com/javase/tutorial/uiswing/components/internalframe.html 참조).

실행중인 프로그램을 체크 아웃하려면 github의 'xenia'프로젝트 (여기, https://github.com/gcchris67/Xenia)를 살펴보십시오.

관련 문제