Rambler's Top100 Технологии

Примеры кодов

Примеры кодов на Java


Следующий пример демонстрирует как сделать поле для ввода IP адреса (IP address) на Swing

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.StringTokenizer;
public class ipPanel extends JPanel{
    public ipPanel(){
        this("");
    }
    public ipPanel(String ip){
        
        //INIT_CONTROLS
        setLayout(null);
        setSize(137,22);        
        add(ip1);
        ip1.setBounds(1,1,30,20);
        ip1.setBorder(null);
        ip1.setHorizontalAlignment(JTextField.CENTER);
        
        add(lbl_sep1);
        lbl_sep1.setBounds(31,1,5,20);
        lbl_sep1.setHorizontalAlignment(JLabel.CENTER);
        
        
        add(ip2);
        ip2.setBounds(36,1,30,20);
        ip2.setBorder(null);
        ip2.setHorizontalAlignment(JTextField.CENTER);
        
        add(lbl_sep2);
        lbl_sep2.setBounds(66,1,5,20);
        lbl_sep2.setHorizontalAlignment(JLabel.CENTER);
        
        
        add(ip3);        
        ip3.setBounds(71,1,30,20);
        ip3.setBorder(null);
        ip3.setHorizontalAlignment(JTextField.CENTER);
        
        
        add(lbl_sep3);
        lbl_sep3.setBounds(101,1,5,20);
        lbl_sep3.setHorizontalAlignment(JLabel.CENTER);
        
        
        add(ip4);
        ip4.setBounds(106,1,30,20);
        ip4.setBorder(null);
        ip4.setHorizontalAlignment(JTextField.CENTER);
        SymKey aSymKey = new SymKey();
        ip1.addKeyListener(aSymKey);
        ip2.addKeyListener(aSymKey);
        ip3.addKeyListener(aSymKey);
        ip4.addKeyListener(aSymKey);
        
        
        setBorder(BorderFactory.createLineBorder(Color.BLACK));
        setBackground(Color.WHITE);
        setIP(ip);
    }
    javax.swing.JTextField ip1 = new javax.swing.JTextField();
    javax.swing.JTextField ip2 = new javax.swing.JTextField();
    javax.swing.JTextField ip3 = new javax.swing.JTextField();
    javax.swing.JTextField ip4 = new javax.swing.JTextField();
    JLabel lbl_sep1 = new JLabel(".");
    JLabel lbl_sep2 = new JLabel(".");
    JLabel lbl_sep3 = new JLabel(".");
    public boolean setIP(String newIP){
        System.out.println("parsing ip "+newIP);
        StringTokenizer st=new StringTokenizer(newIP,".");
        if ( st.countTokens()!=4 ){
            clear();
            return false;
        }
        String[] comps=new String[4];
        for ( int i=0 ; i<4 ; i++ ){
            try {
                comps[i]=st.nextToken();
                int test=Integer.parseInt(comps[i]);
                if ( test<0 || test>255 ){                    
                    clear();
                    System.out.println("parsing ip token out of range: "
+ test);
                    return false;
                }
            }catch(Exception ex){clear(); System.out.println("parsing ip
invalid token: "+comps[i]);return false;}
        }
        ip1.setText(comps[0]);
        ip2.setText(comps[1]);
        ip3.setText(comps[2]);
        ip4.setText(comps[3]);
        return true;
    }
    public String getIP(){
        if ( ip1.getText().length()!=0 && ip2.getText().length()!=0 &&
ip3.getText().length()!=0 && ip4.getText().length()!=0 ){
            StringBuilder sb = new StringBuilder();
           
sb.append(ip1.getText()).append(".").append(ip2.getText()).append(".").append(ip3.getText()).append(".").append(ip4.getText());
            return sb.toString();
        }
        else return null;
    }
    public void clear(){
        ip1.setText("");
        ip2.setText("");
        ip3.setText("");
        ip4.setText("");
    }
    class SymKey extends java.awt.event.KeyAdapter
    {
        
        @Override
        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() ==
KeyEvent.VK_RIGHT){
                keyTyped(e);
            }
        }
        
        public void keyTyped(java.awt.event.KeyEvent event)
        {
            Object object = event.getSource();
            if (object == ip1)
                ip1_keyTyped(event);
            else if (object == ip2)
                ip2_keyTyped(event);
            else if (object == ip4)
                ip4_keyTyped(event);
            else if (object == ip3)
                ip3_keyTyped(event);
        }
    }
    void ip1_keyTyped(java.awt.event.KeyEvent event)
    {
        processKey(ip1,event);
    }
    void ip2_keyTyped(java.awt.event.KeyEvent event)
    {
        processKey(ip2,event);
    }
    void ip3_keyTyped(java.awt.event.KeyEvent event)
    {
        processKey(ip3,event);
    }
    void ip4_keyTyped(java.awt.event.KeyEvent event)
    {
        processKey(ip4,event);
    }
    public void processKey(JTextField tf,java.awt.event.KeyEvent event){
        int asc=event.getKeyChar();
        //System.out.println("asc="+asc);
        if ( asc==46 ){
            if ( tf.getText().length()>0 ){
                if ( tf.equals(ip1) )
                    ip2.requestFocus();
                else if ( tf.equals(ip2) )
                    ip3.requestFocus();
                else if ( tf.equals(ip3) )
                    ip4.requestFocus();
            }
            event.consume();
        }else if ( asc>47 && asc<58 ){
            
            if ( tf.getText().length()==2 ){
                moveFocus(tf, true);
            }
            
            if (Integer.parseInt(tf.getText()+event.getKeyChar())>255)
{                    
                tf.setText("255");
                event.consume();
            }
            if ( tf.equals(ip4) && tf.getText().length()>=3 )
                event.consume();
        }
        else if (asc==KeyEvent.VK_BACK_SPACE ) {
            if ( tf.getText().length()==0 ){
                event.consume();
                moveFocus(tf, false);
            }
        }else if (event.getKeyCode() == KeyEvent.VK_LEFT){            
            if (tf.getCaretPosition() == 0){
                moveFocus(tf, false);
            }
        }else if (event.getKeyCode() == KeyEvent.VK_RIGHT){
            if (tf.getCaretPosition() == tf.getText().length()){
                moveFocus(tf, true);
            }
            
        }
        else{
            event.consume();
        }
    }
    private void moveFocus(JTextField tf, boolean to_right){
        if (!to_right){
            if ( tf.equals(ip4) ){
                ip3.requestFocus();
                ip3.setCaretPosition(ip3.getText().length());
            }
            if ( tf.equals(ip3) ){
                ip2.requestFocus();
                ip2.setCaretPosition(ip2.getText().length());
            }
            if ( tf.equals(ip2) ){
                ip1.requestFocus();
                ip1.setCaretPosition(ip1.getText().length());
            }            
        }else{
            if ( tf.equals(ip1) ){
                ip2.requestFocus();
                ip2.setCaretPosition(ip2.getText().length());
            }
            if ( tf.equals(ip2) ){
                ip3.requestFocus();
                ip3.setCaretPosition(ip3.getText().length());
            }
            if ( tf.equals(ip3) ){
                ip4.requestFocus();
                ip4.setCaretPosition(ip4.getText().length());
            }
        }
    }
    public static void main(String[] args) {
        JFrame fr = new JFrame();
        
        fr.setSize(500,500);
        fr.setLayout(null);
        fr.add( new ipPanel("2.34.45.6"));
        fr.setVisible(true);
        fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

Время - деньги!

Time is money!

Rambler's Top100

Открытые коды

script> width="88" height="31" alt="HotLog">

Открытые коды