본문 바로가기

JAVA /Swing

KeyStroke

class Exam22_sub extends JFrame implements KeyListener, ActionListener{
     private Container con;
     private JTextArea ta = new JTextArea();
     private JScrollPane jsp = new JScrollPane(ta);
     private JMenuBar mb = new JMenuBar(); // 메뉴 바 생성 
     private JMenu file = new JMenu("File"); // 메뉴 바에 넣을 메뉴 하나 추가
     private JMenuItem fexit = new JMenuItem("Exit"); // 메뉴의 서브메뉴 추가
    

 public Exam22_sub(){
          super("Exam22");
          this.init();
          this.start();
          this.setSize(300,300);
          this.setVisible(true);

 }
 
 public void init(){
      this.setJMenuBar(mb); // 메뉴바 추가 
      file.setMnemonic('F'); // 메뉴 첫문자에 밑줄 
      mb.add(file); // 메뉴바에 메뉴 추가 
      KeyStroke ks = KeyStroke.getKeyStroke('E' , InputEvent.CTRL_MASK); // ctrl+e 조합 단축키 생성
      fexit.setAccelerator(ks); // fexit 에 단축키 추가 
      file.add(fexit); // 메뉴에 서브 메뉴 추가 
      con = this.getContentPane();
      con.setLayout(new BorderLayout());
      con.add("Center",jsp);
 }
 public void start(){
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      ta.addKeyListener(this);
      fexit.addActionListener(this);
 }
 public void keyTyped(KeyEvent e){
      // 특정 키와 같이 눌린 키 이벤트 담당
      if(e.getSource() == ta){
           System.out.println("key = "+e.getKeyChar()); // 그냥 키 
           System.out.println(" mode = " + e.getModifiers()); // 조합된 키 
           KeyStroke ks = KeyStroke.getKeyStroke(e.getKeyChar(),e.getModifiers()); // 입력된 키
           KeyStroke ks1 = KeyStroke.getKeyStroke('r',InputEvent.ALT_MASK); // alt+r 의 단축키 생성
       //CTRL_MASK,SHIFT_MASK

           if(ks.equals(ks1)){
            System.out.println( " alt + r 을 눌렀습니다." );
           }else{
            System.out.println(ks);
   }
  }
 }
 public void keyPressed(KeyEvent e){}
 public void keyReleased(KeyEvent e){}
 public void actionPerformed(ActionEvent e){
  
 if(e.getSource() == fexit){
  System.exit(0);
 }
 }
 
}

'JAVA > Swing' 카테고리의 다른 글

InternalFrame Event , ListSelectionListener  (0) 2013.02.27
Ancestor Event , Caret Event , Change Event  (0) 2013.02.27
Toolbar  (0) 2013.02.27
JTextComponent & JTextArea & JPasswordField  (0) 2013.02.27
JTabbedPane  (0) 2013.02.26