2011-09-11 53 views
1

基本上我不想從用戶那裏獲得一個字符串,我創建了一個名爲「frames」的類,其中我有一些方法,如exitChoice(),infoPop()等等。我希望創建一個叫的getText(),這是我到目前爲止有:Java:如何檢測用戶是否已使用actionListener完成保存名稱?

 public String getText() 
     { 
      JDialog textBox = new JDialog(frame, "Save Name", true); 

      JTextField inputField = new JTextField(18); 
      inputField.setText(save == null ? "new save" : save.saveName); 

      textBox.setBounds(width, height, 275, 70); 
      textBox.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
      textBox.setLayout(new FlowLayout()); 
      textBox.setAlwaysOnTop(true); 
      textBox.setResizable(false); 
      textBox.add(inputField); 
      textBox.setVisible(true); 

      return inputField.getText(); 
     } 

現在我知道這是不行的,它只是獲取的遊戲卡,我必須從外部終止它,我也明白爲什麼不工作,這是沒有問題的,我也知道如何添加一個JButton,一個動作偵聽器,並從那裏工作了,

基本上我想創建從獲得字符串乾淨簡單的方法全部包含在方法中的用戶。

理想我想寫一行沿的

//編輯線路上寫着:我知道方法的getText()確實存在,對不起,如果這是一種誤導,我會ammend它

//String saveName = new JTextField.getText(); 
String saveName = new JTextInputGetterBoxThing(); 

但就目前爲止我發現這似乎並不存在,有沒有人有任何想法?或理想地知道我錯過的一個班輪?

回答

2

我想你想要什麼JOptionPane.showInputDialog方法。像這樣?

public class GetUserInput { 

    public static String getUserInput() { 
     return JOptionPane.showInputDialog("Type Something"); 
    } 

    public static void main(String[] args) { 
     System.out.println("User Input: " + getUserInput()); 
    } 
} 

這會顯示一個對話框,提示輸入「Type Something」並輸入文本字段。無論用戶在文本字段中鍵入的內容是否由getUserInput()返回。

+0

謝謝,我使用了類似的方法基於此,儘管我我不允許回答我自己的問題4小時 – Troyseph

1

老實說,我不確定是否完全瞭解您的問題。無論如何, 這裏是一個tutorial關於如何在Swing中正確對話。

如果使用

int ret = JOptionPane.showOptionDialog(new JDialog(), ...); 

您的應用程序主框架輸入被阻塞,直到顯示JDialog的關閉。 如果你不想使用ActionListener或者類似的東西(DocumentListener,...),你可以強制用戶在JTextField中插入一個值,按ok鍵和when showOptionDialog返回,手動檢索文本帶有getText()的JTextField。編輯: 我試着延長我的答案一點點。 延伸的JDialog創建所需的對話框:當它返回

public class CustomDialog extends JDialog{ 
    private JPanel panel; 
    private JTextField field; 
    public CustomDialog(){ 
     panel = new JPanel(); //create a panel possibly with a LayoutManager 
     field = new JTextField(); 
    } 
    public JTextField getField(){ 
     return this.field; 
    } 

} 

然後顯示在你需要它的對話框,並檢查字段文本:

CustomDialog dialog = new CustomDialog(); 
int ret = JOptionPane.showOptionDialog(dialog, ...); 

String text = dialog.getField().getText(); 
+0

謝謝,我認爲你發送的第一個鏈接將幫助我創建我正在尋找的單一方法,但非常有幫助的答案,謝謝大家:D – Troyseph

0
 public String getSaveName() 
     { 
      boolean textGot = false; 
      String returnText = null; 
      while (!textGot) 
       { 
        returnText = (String) JOptionPane.showInputDialog(hub.frame, "Enter the name of your save:\n", "Save Box", 
          JOptionPane.PLAIN_MESSAGE, null, null, save == null ? "new save" : save.saveName); 

        if ((returnText != null) && (returnText.length() > 0)) 
         { 
          textGot = true; 
         } 
       } 
      return returnText; 
     } 

這裏是我使用的最後一個方法,比舊的設置我有這涉及創建一個微小的框架,並添加文本框和一個監聽器按鈕乾淨多了!

+0

只是一個小小的觀察。showInputDialog方法無論如何返回一個字符串,所以你不需要演員。 – clartaq

+0

哦,我以爲它返回一個對象,謝謝:D – Troyseph

相關問題