2025-02-15

[java]
package com.han; 
 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
 
/**
 * 鍵盤事件監聽(2)修改:使用監聽鍵盤事件,而不是改寫JTextField
 * @author HAN
 *
 */ 
public class KeyEvent_2_Modified extends JFrame { 
 
    /**
     * 
     */ 
    private static final long serialVersionUID = -3184139070064852786L; 
 
    public KeyEvent_2_Modified() { 
        // TODO Auto-generated constructor stub  
        final Container container = getContentPane(); 
        container.setLayout(new FlowLayout()); 
        JLabel label = new JLabel("實現隻允許輸入數字的文本框:"); 
        final JTextField textField = new JTextField(10); 
        container.add(label); 
        container.add(textField); 
         
        textField.addKeyListener(new KeyAdapter() { 
             
            @Override 
            public void keyPressed(KeyEvent e) { // keyPressed 與 keyReleased是有時間差的!!  
                // TODO Auto-generated method stub  
                if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
                    char[] text = textField.getText().toCharArray(); 
                    for (char ch : text) { 
                        if (!Character.isDigit(ch)) { 
//                          textField.removeKeyListener(this);  
                            JOptionPane.showMessageDialog(container,  
                                    "Your input contains non-digit characters !",  
                                    "Warning", JOptionPane.WARNING_MESSAGE); 
                            textField.setText(""); 
//                          textField.addKeyListener(this);  
                            return; 
                        } 
                    } 
                } 
            } 
        }); 
    } 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub  
        KeyEvent_2_Modified frame = new KeyEvent_2_Modified(); 
        frame.setTitle("實現隻允許輸入數字的文本框(2)"); 
        frame.pack(); 
        frame.setVisible(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
 

package com.han;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 * 鍵盤事件監聽(2)修改:使用監聽鍵盤事件,而不是改寫JTextField
 * @author HAN
 *
 */
public class KeyEvent_2_Modified extends JFrame {

 /**
  *
  */
 private static final long serialVersionUID = -3184139070064852786L;

 public KeyEvent_2_Modified() {
  // TODO Auto-generated constructor stub
  final Container container = getContentPane();
  container.setLayout(new FlowLayout());
  JLabel label = new JLabel("實現隻允許輸入數字的文本框:");
  final JTextField textField = new JTextField(10);
  container.add(label);      www.aiwalls.com
  container.add(textField);
  
  textField.addKeyListener(new KeyAdapter() {
   
   @Override
   public void keyPressed(KeyEvent e) { // keyPressed 與 keyReleased是有時間差的!!
    // TODO Auto-generated method stub
    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
     char[] text = textField.getText().toCharArray();
     for (char ch : text) {
      if (!Character.isDigit(ch)) {
//       textField.removeKeyListener(this);
       JOptionPane.showMessageDialog(container,
         "Your input contains non-digit characters !",
         "Warning", JOptionPane.WARNING_MESSAGE);
       textField.setText("");
//       textField.addKeyListener(this);
       return;
      }
     }
    }
   }
  });
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  KeyEvent_2_Modified frame = new KeyEvent_2_Modified();
  frame.setTitle("實現隻允許輸入數字的文本框(2)");
  frame.pack();
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }

}

作者:Gaowen_HAN

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *