Java swing nesneleri ile işlem yapıyorsanız JTextField nesnesini projenize dahil etmişsinizdir. Bu yazıda JTextField nesnesini kullanırken sadece sayıları kabul etmeyi göstereceğim.
Bu yazıdaki JNumberTextField sınıfının orjinal kaynağına GitHub üzerinden ulaşabilirsiniz.
İlk olarak yukarıdaki adreste bulunan JTextField sınıfından genişletilen JNumberTextField sınıfını oluşturuyoruz.
JNumberTextField.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /** * A {@link JTextField} that skips all non-digit keys. The user is only able to enter numbers. * * @author Michi Gysel <michi@scythe.ch> * */ import javax.swing.*; import java.awt.event.*; public class JNumberTextField extends JTextField { private static final long serialVersionUID = 1L; @Override public void processKeyEvent(KeyEvent ev) { if (Character.isDigit(ev.getKeyChar())) { super.processKeyEvent(ev); } ev.consume(); return; } /** * As the user is not even able to enter a dot ("."), only integers (whole numbers) may be entered. */ public Long getNumber() { Long result = null; String text = getText(); if (text != null && !"".equals(text)) { result = Long.valueOf(text); } return result; } } |
Ardından uygulamanın bir örneğini hazırlıyoruz.
main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String[] args) { JFrame f = new JFrame(); JNumberTextField textField = new JNumberTextField(); textField.setBounds(80, 150, 250, 40); f.add(textField); f.setSize(400, 500); f.setLayout(null); f.setVisible(true); } } |
Yukarıdaki kodları derleyip çalıştırdığınızda TextField nesnesi sadece sayıları kabul edecektir.
Kaynak:
Yorum Yap