2015-09-04 147 views
0

當前我使用以下代碼向用戶顯示文本字段並從用戶檢索輸入。Java:從JTextField獲取用戶輸入

public void getInputFromUser() 
{ 

    String input = null; 
    JTextField textField = new JTextField(); 
    textField.setColumns(50); 

    textField.setVisible(true); 


    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
    frame.setSize(300, 75); 
    frame.add(textField); 
    frame.setVisible(true); 
    frame.requestFocus(); 
    frame.addWindowListener(null); 


    textField.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae){ 

       String text = textField.getText(); 

       System.out.println(text); 
      } 
     }); 

這工作正常。然而問題是:

•我希望能夠得到輸入時,用戶關閉對話框,放在附近,以當用戶點擊進入

•我想,直到用戶輸入的東西停止執行程序並關閉對話框。現在,即使在用戶在對話框/文本框中輸入任何內容之前,程序仍會繼續運行。

+1

這對大多數對話來說聽起來並不直觀。但是你想阻止它們是一個模式類型的窗口。也許[this](https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html)會有所幫助。 – ChiefTwoPencils

+1

考慮使用'JOptionPane.showInputDialog(..)'而不是框架。它似乎很適合這種需求。另請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556) –

回答

1

我知道一個簡單的方法,你如何做到這一點。當我需要製作類似的東西時,我總是使用JDialog。如果將JDialog設置爲modal,那麼如果JDialog可見,則停止執行該程序。我更新了下面的代碼:

public void getInputFromUser() 
{ 
    String input = null; 
    JTextField textField = new JTextField("sadsadasd"); 
    textField.setColumns(50); 

    textField.setVisible(true); 

    JDialog jd = new JDialog(); 
    jd.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
    jd.setSize(300, 75); 
    jd.add(textField); 
    jd.requestFocus(); 
    jd.setModal(true); 
    jd.setVisible(true); 
    System.out.println("I am here"); 

    textField.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent ae) { 

      String text = textField.getText(); 

      System.out.println(text); 
     } 
    }); 
}