2013-04-20 42 views
1

我想要做一個可執行JButton(它打開一個新窗口)選擇radiobutton,並在特定範圍內填充textfiled(文本字段應該從1800年到2013年)。對於我現在做出默認選擇的單選按鈕,但我無法弄清楚怎樣才能返回一個警告,表示應該填充文本框(1800到2013之間的數字),如果它存在,那麼它會運行該程序。如何在需要的文本字段爲空時發出警告?

編輯: 所以,如果我的代碼是:

JFrame .... 
JPanel .... 

JTextField txt = new JTextField(); 
JButton button = new JButton("run"); 
button.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e) { 
//Do things here 
} 
}); 
txt.addFocusListener(new FocusListener() { 
     .... 
} 

我如何使用ItemStateListener。我應該定義一個監聽器,然後是什麼?

+1

當按鈕被點擊時(在它的'actionPerformed'方法中),你可以檢查範圍並使用'JOptionPane'來判斷值是否超出範圍。你可以使用'ChangeListener'或'ItemStateListener'來監視單選按鈕的變化,並且當範圍在可接受的範圍內時只啓用'JButton'。 – MadProgrammer 2013-04-20 03:51:41

+0

您的問題可以表述爲*「如果需要的文本字段爲空時如何發出警告?」*?如果是這樣,請將其添加爲[編輯問題](http://stackoverflow.com/posts/16116354/edit)。如果沒有,請提出問題並執行相同的操作。 「 – 2013-04-20 03:51:59

+1

*」應填寫「textfield(1800到2013之間的數字)」*對於數值,請改爲使用「JSpinner」。 – 2013-04-20 03:59:20

回答

3
public void actionPerformed(ActionEvent e) 
{ 
    String s = txt.getText(); 
    char[] cArr = s.toCharAray(); 
    ArrayList<Character> chars = new ArrayList<Character>(); 
    for (char c : cArr) 
     if (c.isDigit()) 
      chars.add(c); 
    cArr = new char[chars.size()]; 
    for (int i = 0;i<chars.size();i++) 
     cArr[i] = char.get(i); 
    s = new String(cArr); 
    txtField.setText(s); 
    if (s.equals("")) 
    { 
     // issue warning 
     return; 
    } 
    int input = Integer.parseInt(s); 
    if (input >= 1800 && input <= 2013) 
    { 
     // do stuff 
    } 
} 

基本上,讀取在文本字段中的字符串,從它除去所有非數字字符,並且如果它是在指定的範圍僅繼續進行。

+0

我最關心的是條件按鈕。我怎樣才能將textfield的條件(是否滿足條件)傳遞給按鈕設定的actionlistener? – POD 2013-04-20 04:33:15

+0

如果TextField是全局可訪問的(它應該是),那麼你可以通過txt.getText()來訪問它包含的文本。只需使用我上面發佈的代碼來檢查它是否符合條件。 – 2013-04-20 04:37:04

+0

http://pastebin.com/QU0JxmCN此方法將檢查文本是否符合條件。 – 2013-04-20 04:44:30

相關問題