import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
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 Main {
public static void main(String... args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
JTextField tfield1= new JTextField(10);
JTextField tfield2= new JTextField(10);
FocusListener tfieldListener = new FocusListener() {
@Override
public void focusGained(FocusEvent fe) {
}
@Override
public void focusLost(FocusEvent fe) {
String num1 = tfield1.getText().trim();
String num2 = tfield2.getText().trim();
if (num1 == null || num1.equals(""))
num1 = "0";
if (num2 == null || num2.equals(""))
num2 = "0";
System.out.println(Integer.toString(Integer.parseInt(num1)
+ Integer.parseInt(num2)));
}
};
tfield1.addFocusListener(tfieldListener);
tfield2.addFocusListener(tfieldListener);
((AbstractDocument) tfield1.getDocument())
.setDocumentFilter(new MyDocumentFilter());
((AbstractDocument) tfield2.getDocument())
.setDocumentFilter(new MyDocumentFilter());
contentPane.add(tfield1);
contentPane.add(tfield2);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
}
class MyDocumentFilter extends DocumentFilter {
@Override
public void insertString(FilterBypass fb, int offset, String text,
AttributeSet aset) {
try {
super.insertString(fb, offset, text.replaceAll("\\D++", ""), aset);
} catch (BadLocationException ble) {
ble.printStackTrace();
}
}
@Override
public void replace(FilterBypass fb, int offset, int len, String text,
AttributeSet aset) {
try {
super.replace(fb, offset, len, text.replaceAll("\\D++", ""), aset);
} catch (BadLocationException ble) {
ble.printStackTrace();
}
}
}