2012-12-05 3 views
0

저는 자바에서 명령 행 프로그램을 개발하고 있습니다. GUI 솔루션을 구현하는 방법을 연구하고 있습니다. 나는 이것에 대해 새롭기 때문에 어떤 도움이 매우 도움이 될 것입니다. 미리 감사드립니다. 최근에 버튼에 관한 다른 질문을했지만 지금은 다른 질문이 있습니다.자바의 메뉴 간 점프

저는 버튼을 기반으로 액션을 수행하기 위해 액션 리스너를 사용하는 방법을 책에서 배웠습니다. 그러나이 책에서 단추는 단순히 텍스트 출력을 생성하는 메서드를 호출했습니다.

사용자가 다른 버튼/옵션을 사용하여 새 창으로 이동하는 버튼을 누를 수있는 방법이 필요하며 사용자가 원하는 경우 다른 버튼을 눌러 이전 창으로 돌아갈 수 있습니다. 누군가 내게 아래 예제에 대한 설명과 함께 해골 솔루션을 보여줄 수 있다면 :

사용자는 "라이브러리 메뉴"와 "계정 메뉴"라는 두 개의 버튼이 제공됩니다. 사용자가 "라이브러리 메뉴"를 누르면 창으로 이동합니다 책을 추가하고, 책을 삭제하고, 최종 버튼으로 홈 화면으로 돌아갈 수있는 옵션이 있습니다. 사용자가 "계정 메뉴"를 누르면 추가, 삭제, 이름 바꾸기 등의 버튼이있는 새 창/메뉴가 나타나고 다시 홈 화면/기본 메뉴로 돌아가는 마지막 단추가 나타납니다.

라이브러리를 선택하면 라이브러리 클래스에서 메서드를 호출하기 때문에 명령 줄을 사용하면이 작업이 간단 해졌습니다. 이 방법은 사용자 입력에 따라 다른 메소드를 호출하는 스위치 케이스를 가지며 사용자가 'e'를 입력 한 경우, 예를 들어 스위치 케이스에 메소드를 반환 할 수있는 옵션이 있습니다. 즉 return 문은 사용자를 처음에 그것을 (홈 화면에서) 호출했습니다.

이 도움말/조언/정보에 매우 감사드립니다 !!!!

답변

2

일반적으로 사용자에게 여러 개의 창 또는 프레임을 제시하는 것이 좋습니다 아니에요, 신속 혼란스럽고 성가신된다.

일반적으로보기를 전환하려면 사용자 기본 화면의 내용을 변경할 수있는 CardLayout을 사용해야합니다.

은 또한 사용할 수 있습니다 그들은 당신이 모든 "창"에 대한 인 JPanel을하고, JFrame의에 그 전환 할 수

0

actionListener에 대해 알고 계시 겠지만 JFrame을 만드는 방법을 알고 계실 것입니다. 논리가 괜찮은 것으로 보입니다. 내가 틀렸다고 정정하면 ActionListener의 해골이 필요합니까? 당신의 버튼의 MouseListener를 들어
, 이것은 아마 잘 작동합니다 :

JButton btnExit = new JButton("Exit"); // Creating the button 

btnExit.addMouseListener(new MouseAdapter() { // Adding a mouseListener to your component 
    // Mouse is pressed in this component 
    @Override 
    public void mousePressed(MouseEvent e){ 
     yourFrame.dispose() // Closes your JFrame 
    } 
}); 

1

을 원하는대로 사용자가 다른보기 사이를 이동할 수 있도록 해주는 JTabbedPane. 미래에 변경 될 수있는 동일한 디자인을 가지려면 단추 추가를위한 생성 단계가 필요합니다.

Action-s (AbstractAction)로 작업하면 모델보기에서 모두 분리가 가능합니다. -제어 장치.

진짜 응용 프로그램은 아마 하나의 메인 JFrame 일 것이고 아마도 일부 JFrames를 호출 할 것입니다. 확실히 @MadProgrammer가 제안한 아이디어입니다. JPanels는 JTabbedPane, JInternalFrame 등 무엇이든 상관없이 연결될 수 있습니다.

MVC 클래스가 동작을 관리하고 JPanel을 제공하도록합니다.

0

모든 바람 (새로운 창)을 먼저 만들고 버튼 클릭으로 만 표시하면 같은 창에 여러 개의 인스턴스가 없을 것입니다.

public MainWindow extends JFrame 
{ 
    private LibraryWindow libWin; 
    private AccountsWindow accWin; 

    public MainWindow() 
    { 
     libWin = new LibraryWindow(); 
     libWin.setParent(this); 
     accWin = new AccountsWindow(); 
     accWin.setParent(this); 

     ... 

     this.show(); 
    } 

    btnLib.addMouseListener(new MouseAdapter() { // Adding a mouseListener to your component 
    // Mouse is pressed in this component 
    @Override 
    public void mousePressed(MouseEvent e){ 
     libWin.show(); //shows your window on top of the main window 

     //if you want to switch windows you can hide the parent 
     this.hide(); 
    } 
}); 


public LibraryWindow extends JFrame 
{ 


    public LibraryWindow() 
    { 
     //create/design the window 

     ... 

     //don't show the window, the main window will do that 
    } 

    btnExit.addMouseListener(new MouseAdapter() { // Adding a mouseListener to your component 
    // Mouse is pressed in this component 
    @Override 
    public void mousePressed(MouseEvent e){ 

     //if you want to switch windows you can show the parent 
     this.parent.show(); 

     this.hide(); //only hide the window in order to reuse it 
     //restore the window to its initial state 
    } 
});