2016-09-12 85 views
1

我有一個帶有文本框和提交按鈕的小型GUI項目。我想要做的是讓用戶在文本框中輸入並提交一個輸入,以便將它們移動到程序中(例如,進入下一個菜單)。該程序沒有使用GUI和使用控制檯輸入輸入(如第一個代碼所示),所以我想將該程序從控制檯移開。在Eclipse中解析來自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); 
} 

可能還有其他一些小的方面,我錯過了,但是這是最重要的部分。

相關問題