2013-07-12 4 views
0

나는 내 응용 프로그램의 인터페이스를 만드는 데 사용하는 TabBuilder이라는 클래스가 있지만 기묘한 문제를 겪고 있습니다. 아래 코드를 실행하려고하면 mainScreen이 그려지지만 BarMenu에서 SearchScreen을 요청하면 나타나지 않습니다. public static void main (String[] args) MainString 내에서 SearchScreen 만 실행하려고하면 (빌더 호출) 너무 많이 표시되지는 않습니다. 하지만 요청 이벤트와 팁 TabBuilder tb = new TabBuilder(); tb.requestTab();으로 가면 화면이 정상적으로 표시됩니다. 그래서, 무엇이 잘못 되었을까요? 미리 감사는JFrame이 보이지 않는다

MainScreen :

public class MainScreen{ 

    public MainScreen() 
    { 
     TabBuilder tb = new TabBuilder(); 
     tb.mainTab(); 
    } 
} 

SearchScreen :

public class SearchScreen{ 

    public void SearchScreen(){ 

     TabBuilder tb = new TabBuilder(); 
     tb.requestTab();   

    } 
} 

TabBuilder :

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class TabBuilder implements ActionListener { 

    JTabbedPane tabbedPane = new JTabbedPane(); 
    JMenuItem close, request; 
    protected JTextField txtrequest = new JTextField(); 
    JButton btrequest = new JButton(); 
    protected JFrame requestFrame = new JFrame(); 

    public void TabBuilder(){ 

    } 

    public void mainTab(){ 

     JMenuBar bar; 
     JMenu file, register; 
     JFrame mainFrame = new JFrame(); 

     bar= new JMenuBar(); 
     file= new JMenu("File"); 
     register= new JMenu("Request"); 

     close= new JMenuItem("Close"); 
     close.addActionListener(this); 

     request= new JMenuItem("Request Query"); 
     request.addActionListener(this); 

     bar.add(file); 
     bar.add(register); 
     file.add(close); 
     register.add(request); 

     mainFrame.setExtendedState(mainFrame.getExtendedState() | mainFrame.MAXIMIZED_BOTH); // Maximized Window or setSize(getMaximumSize()); 
     mainFrame.setTitle("SHST"); 
     mainFrame.setJMenuBar(bar); 
         mainFrame.setDefaultCloseOperation(0); 
     mainFrame.setVisible(true); 

     WindowListener J=new WindowAdapter(){ 
      public void windowClosing(WindowEvent e){ 
       System.exit(0); 
      } 
     }; 

     mainFrame.addWindowListener(J); 
    } 

    public void requestTab(){ 
     JLabel lbrequest; 
     JPanel requestPane; 

     btrequest= new JButton("request"); 
     lbrequest= new JLabel("Type Keywords in english to be requested below:"); 
     txtrequest= new JTextField(); 
     requestPane=new JPanel(); 
     requestPane.setBackground(Color.gray); 
     requestPane.add(lbrequest); 
     requestPane.add(txtrequest); 
     requestPane.add(btrequest); 
     requestPane.setLayout(new GridLayout(3,3)); 
     btrequest.setEnabled(true); 

     requestFrame.add(requestPane); 
     requestFrame.setTitle("SHST"); 
     requestFrame.setSize(400, 400); 
     requestFrame.setVisible(true); 
     requestFrame.setDefaultCloseOperation(1); 
    } 

    public void actionPerformed(ActionEvent e){ 
     if(e.getSource()==close){ 
      System.exit(0); 
     } 

     if(e.getSource()==request){ 
      TabBuilder tb = new TabBuilder(); 
      tb.requestTab(); 
     } 
    } 

    public static void main (String[] args){ 
     MainScreen m = new MainScreen(); 
    } 
} 
+0

실행 환경이 무엇입니까? 당신의 본보기가 나를 위해 일합니다. –

+0

@ViktorSeifert 문제가 무엇인지 이미 확인했습니다. 답변을 확인하고 지원해 주셔서 대단히 감사합니다. –

+0

답변을 수락하는 것을 잊지 마십시오. –

답변

2

SearchScreen의 생성자는 void로 정착되었다. 이로 인해 생성자를 호출 할 때 아무 것도 객체로 반환되지 않았습니다. 초보자 실패하지만 간단한 해결책.

관련 문제