zoukankan      html  css  js  c++  java
  • e618. Validating a JTextField When Permanently Losing the Focus

    This example demonstrates a text field that validates its contents when it receives a permanent focus-lost event. If the contents are invalid, it displays a modal dialog with an error message and regains the focus.

        JTextField component = new JTextField(10);
        component.addFocusListener(new MyFocusListener());
        
        public class MyFocusListener extends FocusAdapter {
            boolean showingDialog = false;
        
            public void focusGained(FocusEvent evt) {
                final JTextComponent c = (JTextComponent)evt.getSource();
                String s = c.getText();
        
                // Position the caret at the 1st non-digit character
                for (int i=0; i<s.length(); i++) {
                    // Ensure validity
                    if (!Character.isDigit(s.charAt(i))) {
                        c.setSelectionStart(i);
                        c.setSelectionEnd(i);
                        break;
                    }
                }
            }
            public void focusLost(FocusEvent evt) {
                final JTextComponent c = (JTextComponent)evt.getSource();
                String s = c.getText();
        
                if (evt.isTemporary()) {
                    return;
                }
                for (int i=0; i<s.length(); i++) {
                    // Ensure validity
                    if (!Character.isDigit(s.charAt(i))) {
                        // Find top-level window
                        Component par = c;
                        while (par.getParent() != null) {
                            par = par.getParent();
                        }
                        final Frame frame = (Frame)par;
        
                        // Create and display an error message
                        JOptionPane optionPane = new JOptionPane("The value must only contain digits",
                            JOptionPane.ERROR_MESSAGE, JOptionPane.DEFAULT_OPTION);
                        optionPane.createDialog(frame, null).show();
        
                        // Regain the focus
                        c.requestFocus();
                        break;
                    }
                }
            }
        }
    
    Related Examples
  • 相关阅读:
    Linux系统安装Apache 2.4.6
    Redhat Server 5.7 安装配置PHP
    ORACLE基本数据类型总结
    Nagios学习实践系列——产品介绍篇
    Linux技术修复
    python的特殊方法:
    python获取对象信息
    python多重继承:
    python多态
    python类的继承
  • 原文地址:https://www.cnblogs.com/borter/p/9596104.html
Copyright © 2011-2022 走看看