有沒有辦法強制在JTextField
中的所有用戶輸入在Java中都是大寫?java force JTextField僅爲大寫
回答
一個完整的工作示例可以幫助您
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class UpperCasedTextFieldTester extends JFrame {
/** */
private static final long serialVersionUID = -4767854098431909437L;
public UpperCasedTextFieldTester(){
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.LEFT));
DocumentFilter filter = new UppercaseDocumentFilter();
JTextField firstName = new JTextField();
firstName.setPreferredSize(new Dimension(100, 20));
((AbstractDocument) firstName.getDocument()).setDocumentFilter(filter);
JTextField lastName = new JTextField();
lastName.setPreferredSize(new Dimension(100, 20));
((AbstractDocument) lastName.getDocument()).setDocumentFilter(filter);
add(firstName);
add(lastName);
}
public static void main(String[] args) {
new UpperCasedTextFieldTester().setVisible(true);
}
}
class UppercaseDocumentFilter extends DocumentFilter {
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String text, AttributeSet attr) throws BadLocationException {
fb.insertString(offset, text.toUpperCase(), attr);
}
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, AttributeSet attrs) throws BadLocationException {
fb.replace(offset, length, text.toUpperCase(), attrs);
}
}
你有兩個直接的選擇。您可以提供自己的document,這是工作的點點,或提供自己的DocumentFilter
或者,你只是谷歌,看看你發現了什麼,像http://www.java2s.com/Code/Java/Swing-JFC/DocumentFilterthatmapslowercaseletterstouppercase.htm此例如;)
根據他的需要,OP也可以使用'KeyListener'或'InputVerifier'。 – Jeffrey 2012-07-20 02:02:54
@Jeffrey:不,KeyListener是一個低級解決方案,應該不鼓勵。它只是感覺不對,因爲它只能在用戶輸入的一個方面工作,當輸入可以來自任何數量的來源。 1+給MadProgrammer的回答。我認爲DocumentFilter是這裏的一種方式。 – 2012-07-20 02:05:13
另外,在文本添加到字段失去焦點時才調用的字段後調用InputVerifier。它不適合這個目的,否則你只是使用焦點偵聽器 – MadProgrammer 2012-07-20 02:12:23
下面是一個例子DocumentFilter
。
AbstractDocument document = (AbstractDocument) textfield
.getDocument();
document.setDocumentFilter(new DocumentFilter() {
@Override
public void insertString(FilterBypass fb, int offset,
String string, AttributeSet attr)
throws BadLocationException {
super.insertString(fb, offset, string.toUpperCase(), attr);
}
@Override
public void replace(FilterBypass fb, int offset, int length,
String text, AttributeSet attrs)
throws BadLocationException {
super.insertString(fb, offset, text.toUpperCase(), attrs);
}
});
- 1. Java JTextField在寫入時轉換爲大寫/小寫
- 2. 僅字符串首字母大寫java
- 3. 基於jtextfield過濾JTable非區分大小寫(Java)
- 4. 的Java - Eclipse中的JTextField太大
- 5. Qt:QDockWidget的Force大小
- 6. JTextField的大小
- 7. ActionListener JTextField Java
- 8. compare jTextField - java
- 9. Java,JTextField .equals
- 10. Java-JTextField驗證
- 11. Java JTextfield焦點
- 12. SQL:僅首字母大寫
- 13. Java Swing JPanel對象大小全部匹配JTextField大小
- 14. java swing JTextField set PlaceHolder
- 15. 在Java中爲JTextField顯示事件?
- 16. 使用Jtextfield的值作爲java代碼
- 17. Java大寫,小寫問題
- 18. java中的大寫字母到大寫
- 19. 如何將JTextField轉換爲字符串和字符串爲JTextField?
- 20. Java的正則表達式爲大寫
- 21. 轉換ß.cfg爲大寫的Java
- 22. java:寫大文件?
- 23. 允許jTextField爲空?
- 24. 當mySQL命令爲大寫時,executeQuery僅適用於查詢?
- 25. JTextField上的最大值
- 26. JTabbedPane中的JTextfield過大
- 27. 在同一時間設置jtextfield文本限制和大寫
- 28. 切換大寫鎖定工具提示上的JTextField
- 29. 當JTextField爲空時
- 30. Izpack force minimum JRE
是的,這是可能的。你有什麼嘗試? – Jeffrey 2012-07-20 01:52:20
有沒有辦法強制人們發佈問題來正確地大寫Java和每句話的第一個單詞? – 2012-07-20 03:23:00
有沒有辦法阻止人們張貼無用的評論? – 2012-07-20 05:59:41