• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 427
  • Last Modified:

How can I add a Listener that responds to ENTER key?

How can I add a Listener that responds to ENTER key instead of clicking Print button?
//  SimpleList.java
//
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class NewClass extends JPanel {
    String label[] = { "Zero","One","Two","Three","Four","Five","Six",
                       "Seven","Eight","Nine","Ten","Eleven" };
    JList list;
 
    public NewClass( ) {
        this.setLayout(new BorderLayout( ));
        list = new JList(label);
        JScrollPane pane = new JScrollPane(list);
        JButton button = new JButton("Print");
        button.addActionListener(new PrintListener( ));
 
        add(pane, BorderLayout.CENTER);
        add(button, BorderLayout.SOUTH);
    }
 
    
    
    class PrintListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int selected[] = list.getSelectedIndices( );
            System.out.println("Selected Elements:  ");
 
            for (int i=0; i < selected.length; i++) {
                String element =
                      (String)list.getModel( ).getElementAt(selected[i]);
                System.out.println("  " + element);
            }
        }
    }
 
    
    public static void main(String s[]) {
         JFrame frame = new JFrame("Simple List Example");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setContentPane(new NewClass( ));
         frame.setSize(250, 200);
         frame.setVisible(true);
    }
    
    
    
}
 
    
    // An inner class to respond to clicks of the Print button

Open in new window

0
glynco
Asked:
glynco
1 Solution
 
n_sachin1Commented:
Make the print button the default button for your frame.

    javax.swing.JRootPane rootPane = frame.getRootPane();
    rootPane.setDefaultButton(button);

Below is the working code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NewClass extends JPanel {
    String label[] = { "Zero","One","Two","Three","Four","Five","Six",
                       "Seven","Eight","Nine","Ten","Eleven" };
    JList list;
    JButton button;
 
    public NewClass( ) {
        this.setLayout(new BorderLayout( ));
        list = new JList(label);
        JScrollPane pane = new JScrollPane(list);
        button = new JButton("Print");
        button.addActionListener(new PrintListener( ));
 
        add(pane, BorderLayout.CENTER);
        add(button, BorderLayout.SOUTH);
    }
 
 
 
    class PrintListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int selected[] = list.getSelectedIndices( );
            System.out.println("Selected Elements:  ");
 
            for (int i=0; i < selected.length; i++) {
                String element =
                      (String)list.getModel( ).getElementAt(selected[i]);
                System.out.println("  " + element);
            }
        }
    }
 
 
    public static void main(String s[]) {
         JFrame frame = new JFrame("Simple List Example");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         NewClass newclass = new NewClass( );
         frame.setContentPane(newclass);
         javax.swing.JRootPane rootPane = frame.getRootPane();
		 rootPane.setDefaultButton(newclass.button);
 
         frame.setSize(250, 200);
         frame.setVisible(true);
    }
 
 
 
}

Open in new window

0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now