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
  • 相关阅读:
    vue-cli 打包编译 -webkit-box-orient: vertical 被删除解决办法
    vue静态文件处理
    vue项目关闭eslint检查
    Mac 桌面软件开发基础问答
    Mac App开发
    mac os app 开发
    ffmpeg学习目录收集
    vue中html模板使用绑定的全局函数
    软件版本标识
    shell之ulimit应该注意的事项
  • 原文地址:https://www.cnblogs.com/borter/p/9596104.html
Copyright © 2011-2022 走看看