SSISO Community

시소당

setCharacterSubsets 한영키 안바꾸고 자동으로 인식되는 필드

import  java.awt.*;
import  javax.swing.*;
import  java.util.*;
import  java.awt.im.*;
import  java.awt.event.*;
import  javax.swing.event.*;


class  Mal_Sub  extends  JFrame  implements  ActionListener,  KeyListener,  FocusListener  {
  private  Container  con;
  private  JTextField  tf_korean,  tf_english,  tf_number;
  private  JLabel  lb_korean,  lb_english,  lb_number;
  private  JPanel  jp;

  private  Dimension  dimen,  dimen1;
  private  Toolkit  tk;

  public  Mal_Sub()  {
    super("Test");
    this.init();
    this.gogo();

    this.setSize(300,  200);
    tk  =  Toolkit.getDefaultToolkit();
    dimen  =  tk.getScreenSize();
    dimen1  =  getSize();
    this.setLocation(  (int)(dimen.getWidth()/2  -  dimen1.getWidth()/2),
      (int)(dimen.getHeight()/2  -  dimen1.getHeight()/2)  );
    this.setVisible(true);
  }

  public  void  init()  {
    con  =  this.getContentPane();
    jp  =  new  JPanel(  new  GridLayout(3,  2)  );
  
    lb_korean  =  new  JLabel("          한글  입력  :  ");
    lb_english  =  new  JLabel("          Input  English  :  ");
    lb_number  =  new  JLabel("          Input  Number  :  ");

    tf_korean  =  new  JTextField(20);
    tf_english  =  new  JTextField(20);
    tf_number  =  new  JTextField(20);


    //다시  영문으로...
    //Character.Subset[]  subset  =  null;
    //inCtx.setCharacterSubsets(  subset  );
    
    jp.add(lb_korean);
    jp.add(tf_korean);
    jp.add(lb_english);
    jp.add(tf_english);
    jp.add(lb_number);
    jp.add(tf_number);

    con.add(  jp  );
  }

/*
  public  void  toKoreanIME(Component  comp)  {  
                try  {  
                        InputContext  inCtx  =  comp.getInputContext();  
                        Character.Subset[]  subset  =  {  Character.UnicodeBlock.HANGUL_SYLLABLES  };  
                        inCtx.setCharacterSubsets(  subset  );  
                }catch  (Exception  x)  {  }  
        }

*/  

  public  void  gogo()  {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    tf_korean.addActionListener(this);
    tf_english.addActionListener(this);
    tf_korean.addKeyListener(this);
    tf_english.addKeyListener(this);
    tf_number.addKeyListener(this);

    tf_korean.addFocusListener(this);
    tf_english.addFocusListener(this);
    tf_number.addFocusListener(this);
  }

  public  void  actionPerformed(ActionEvent  e)  {
    if(  e.getSource()  ==  tf_korean)  {      //한글  입력란에  한글을  입력한  후에  엔터를  치면..  포커스를  넘긴다(마치  탭키처럼)
      tf_english.requestFocus();
    }else  if(  e.getSource()  ==  tf_english  )  {//영어란에  영어을  입력한  후에  엔터를  치면..  포커스를  넘긴다(마치  탭키처럼)
      tf_number.requestFocus();
    }
  }

  public  void  keyPressed(KeyEvent  e)  {
    //                    Invoked  when  a  key  has  been  pressed.
    if(  e.getKeyCode()  ==  e.VK_ESCAPE  )  {
      JOptionPane.showMessageDialog(null,  "Esc  is  not  permitted.",
            "information",  JOptionPane.INFORMATION_MESSAGE  );
    }
  }

  public  void  keyReleased(KeyEvent  e)  {
    //          Invoked  when  a  key  has  been  released.

  }
        
  public  void  keyTyped(KeyEvent  e)  {
    //          Invoked  when  a  key  
  }

  public  void  focusGained(FocusEvent  e)  {
    if(  e.getSource()  ==  tf_korean  )  {
      try{
        InputContext  inCtx2  =  tf_korean.getInputContext();  //  comp는  text  component
        Character.Subset[]  subset2  =  {  Character.UnicodeBlock.HANGUL_SYLLABLES    };
        inCtx2.setCharacterSubsets(  subset2  );
      }catch(Exception  ee)  {  }
    }else  if(  e.getSource()  ==  tf_english)  {
      try{
        InputContext  inCtx  =  tf_korean.getInputContext();  //  comp는  text  component
        Character.Subset[]  subset  =  null;
        inCtx.setCharacterSubsets(  subset  );
      }catch(Exception  ee)  {  }
    }else  if(  e.getSource()  ==  tf_number)  {
      try{
        InputContext  inCtx  =  tf_korean.getInputContext();  //  comp는  text  component
        Character.Subset[]  subset  =  {  Character.UnicodeBlock.NUMBER_FORMS    };
        inCtx.setCharacterSubsets(  subset  );
      }catch(Exception  ee)  {  }
    }
  }
  public  void  focusLost(FocusEvent  e)  {

  }
}

public  class  Mal  {
  public  static  void  main(String[]  args)  {
    JFrame.setDefaultLookAndFeelDecorated(true);
    
    new  Mal_Sub();
  }
}

출처  한영키  안바꾸고  자동으로  인식되는  필드|작성자  웅쓰
http://blog.naver.com/woong1277?Redirect=Log&logNo=47840743

2015 view

4.0 stars