2016-05-24 12 views
2

ボタンが1つのシンプルなウィンドウを作成したいと思います。 私が彼を押すときは、「テスト」とF5「F5」を押したときに印刷されるはずです。 私はあなたがそれにsetFocusable(true)メソッドを呼び出してコンポーネントのためのキーボードフォーカスを有効にすることができ、私はまだ例えばActionListenerとKeyListenerを同時に使用することはできません

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

@SuppressWarnings("serial") 
public class Okienko extends JFrame implements ActionListener , KeyListener 
{ 
    static Okienko frame; 

    JButton bTest; 

    public Okienko() 
    { 
     setLayout(null); 
     frame = this; 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setTitle("test"); 
     frame.setLocation(150, 150); 
     frame.setSize(200, 400); 


     bTest = new JButton("Test"); 
     bTest.setBounds(20, 50, 120, 20); 
     frame.add(bTest); 

     bTest.addActionListener(this); 

     frame.addKeyListener(this); 
     //frame.setFocusable(false); 
     //frame.requestFocus(); 
     requestFocusInWindow(); 
     frame.setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     Object source = e.getSource(); 

     if (source == bTest) 
     { 
      System.out.println("Test"); 
     } 
    } 

    @Override 
    public void keyPressed(KeyEvent e) 
    { 
     int id = e.getKeyCode(); 

     if (id == KeyEvent.VK_ESCAPE) 
     { 
      this.dispose(); 
     } 

     if (id == KeyEvent.VK_F5) 
     { 
      System.out.println("F5"); 
     } 

    } 

    @Override 
    public void keyReleased(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyTyped(KeyEvent e) 
    { 

    } 
    public static void main(String[] args) 
    { 
     new Okienko(); 
    } 

} 

答えて

関連する問題