JButtonでキー入力(Returnキーなど)を捕捉する -- KeyAdapterの使い方

戻る



::::::::::::::
KeyListenerTest.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;

public class KeyListenerTest extends Frame implements KeyListener {

    KeyListenerTest() {
        super( "KeyListenerTest" );
        TextField tf1 = new TextField();
        tf1.addKeyListener( this );
        this.add( tf1 );
        setSize( 200, 100 );
        show();
    }
    public void keyPressed( KeyEvent e ) {
        System.out.println( "Press: " + e.getKeyText( e.getKeyCode() ) );
    }
    public void keyReleased( KeyEvent e ) {
        System.out.println( "Release: " + e.getKeyText( e.getKeyCode() ) );
    }
    public void keyTyped( KeyEvent e ) {
        System.out.println( "Type: " + e.getKeyChar() );
    }
    public static void main( String [] args ) {
        new KeyListenerTest();
    }
}

::::::::::::::
LoginForm.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.util.*;

/**
* $Id: LoginForm.html,v 1.1 2009/06/22 16:11:50 kishi Exp kishi $
*/
public class LoginForm extends JFrame implements ActionListener {

    private JTextField loginName;
    private JPasswordField passwd;
    private JButton submit;
    private JButton reset;

    public LoginForm() {

        super( "■ログイン画面" );
        setBounds( 128, 256, 480, 600 );

        JPanel panel = new JPanel();
        panel.setPreferredSize( new Dimension( 300, 60 ) );
        panel.setLayout( new GridLayout( 3, 4 ) );

        // 1行目
        panel.add( new JLabel() );
        JLabel label1 = new JLabel( "Login Name", JLabel.RIGHT );
        panel.add( label1 );

        loginName = new JTextField( 10 );
        panel.add( loginName );

        panel.add( new JLabel() );

        // 2行目
        panel.add( new JLabel() );
        JLabel label2 = new JLabel( "Password", JLabel.RIGHT );
        panel.add( label2 );

        passwd = new JPasswordField( 10 );
        panel.add( passwd );

        panel.add( new JLabel() );

        // 3行目
        panel.add( new JLabel() );
        submit = new JButton( "送信" );
        submit.addActionListener( this );
        submit.setActionCommand( "SUBMIT" );
        panel.add( submit );

        submit.addKeyListener( new KeyAdapter() {
                                   public void keyReleased( KeyEvent e ) {
                                       Object keyText = e.getKeyText( e.getKeyCode() );
                                       System.out.println( "Release: " + keyText );

                                       if ( "Enter".equals( keyText ) ) {
                                           System.out.println( "リターンキーが押下されました。" );
                                           doAuthenticate();
                                       }
                                   }
                               }
                             );

        reset = new JButton( "クリア" );
        reset.addActionListener( this );
        reset.setActionCommand( "RESET" );
        panel.add( reset );

        panel.add( new JLabel() );

        // パネルをコンテナに配置
        Container container = getContentPane();
        container.add( panel );

        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setVisible( true );
        pack();
    }

    public void actionPerformed( ActionEvent event ) {
        String command = event.getActionCommand();

        if ( "SUBMIT".equals( command ) ) {
            doAuthenticate();
        }
        if ( "RESET".equals( command ) ) {
            loginName.setText( "" );
            passwd.setText( "" );
        }
    }

    private void doAuthenticate() {
        String userName = loginName.getText().trim();
        char[] c = passwd.getPassword();
        String pwstr = new String( c );
        System.out.println( userName + " : " + pwstr );
    }

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

}
戻る inserted by FC2 system