2016-09-12 1 views
1

텍스트 상자와 제출 버튼이있는 작은 GUI 프로젝트가 있습니다. 내가하고 싶은 일은 사용자가 텍스트 상자에 입력하고 프로그램을 통해 이동시키는 입력을 제출하는 것입니다 (예 : 다음 메뉴로 이동하려면 1 번). 이 프로그램은 GUI를 사용하지 않고 콘솔을 사용하여 입력을 입력하므로 (첫 번째 코드 에서처럼) 콘솔에서 프로그램을 멀리 옮기고 싶습니다.Eclipse에서 Console 대신 GUI에서 입력 구문 분석

public static void main(String[] args) { 
    //Initialize menu variable 
    Menu menu = MainMenu.getInstance(); 

    new Console(); 
    while (true){ 
     //Display current menu 
     menu.displayMenu(); 
     while (menu.moreInputNeeded()){ 
      menu.displayPrompt(); 
      try { 
       // Process user input. 
       menu.parseInput(new BufferedReader(new InputStreamReader(System.in)).readLine()); 
      } catch (IOException e) { 
       // printStackTrace(); 
       System.out.println(Prompt.INVALID_INPUT); 
      } 
     } 

     menu = menu.getNextMenu(); 
    } 
}   

나는 다음과 같은 텍스트가/제출 '버튼을 사용합니다 :

지금 내 주요이다

 //Create the Text Box 
    JTextField textField = new JTextField(20); 

    //Submit Button 
    JButton submit = new JButton("Submit"); 


    //Submit Function 
    submit.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      menuinput = textField.getText(); 
      textField.setText(""); 

      // 
      System.out.println(menuinput); 

     } 
    }); 

을 따라서 콘솔 대신 GUI에서 사용자 입력을 처리 할 수 ​​있습니다 ?

답변

0

나는 내 자신의 질문을 알아낼 수있었습니다. 방법

//Variables 
JTextField tfIn; 
JLabel lblOut; 
private final PipedInputStream inPipe = new PipedInputStream(); 
private final PipedInputStream outPipe = new PipedInputStream(); 
PrintWriter inWriter; 

String input = null; 
Scanner inputReader = new Scanner(System.in); 
//Variables 

    System.setIn(inPipe); 
    try { 
     System.setOut(new PrintStream(new PipedOutputStream(outPipe), true)); 
     inWriter = new PrintWriter(new PipedOutputStream(inPipe), true); 
    } 
    catch(IOException e) { 
     System.out.println("Error: " + e); 
     return; 
    } 
    tfIn = new JTextField(); 
    tfIn.addActionListener(this); 
    frame.add(tfIn, BorderLayout.SOUTH); 

: 나는 구현

public synchronized void actionPerformed(ActionEvent evt) 
{ 
    textArea.setText(""); 
    String text = tfIn.getText(); 
    tfIn.setText(""); 
    inWriter.println(text); 
} 

내가 놓친 다른 작은 부분이있을 수 있습니다를하지만 가장 중요한 부분입니다.

관련 문제