menuKeyTyped and menuKeyReleased methods do not work. - Java

This is a discussion on menuKeyTyped and menuKeyReleased methods do not work. - Java ; Hi All, The code below has 3 menu items. If I highlight a menu item and press the Enter key, it will run System.out.println("press"); 3 times. My first question is why three times but not one? My next question is ...

+ Reply to Thread
Results 1 to 4 of 4

menuKeyTyped and menuKeyReleased methods do not work.

  1. Default menuKeyTyped and menuKeyReleased methods do not work.

    Hi All,

    The code below has 3 menu items. If I highlight a menu item and press
    the Enter key, it will run

    System.out.println("press");

    3 times.

    My first question is why three times but not one?
    My next question is why it not run System.out.println("type");?

    Thank a lot.

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class MenuEnterKey extends JFrame implements MenuKeyListener,
    ItemListener{
    JLabel l=new JLabel();
    JLabel a=new JLabel("Enter Loan Amount");
    JLabel pay=new JLabel("");
    ButtonGroup group0 = new ButtonGroup( );
    JRadioButtonMenuItem year7 = new JRadioButtonMenuItem("7 Years at
    5.35%");
    JRadioButtonMenuItem year15 = new JRadioButtonMenuItem("15 Years at
    5.5%");
    JRadioButtonMenuItem year30 = new JRadioButtonMenuItem("30 Years at
    5.75%",true);
    Container pane;
    public MenuEnterKey(){
    super("Loan Payment");
    setSize(300, 200);
    setLocation(200, 200);
    JMenuItem quitItem = new JMenuItem("Exit");
    year7.addMenuKeyListener(this);
    year15.addMenuKeyListener(this);
    year30.addMenuKeyListener(this);
    year7.addItemListener(this);
    year15.addItemListener(this);
    year30.addItemListener(this);
    // create the term menu
    JMenu menu1 = new JMenu("Select a Term");
    menu1.setMnemonic('S');
    year7.setMnemonic('7');
    year15.setMnemonic('1');
    year30.setMnemonic('3');
    group0.add(year7);
    menu1.add(year7);
    group0.add(year15);
    menu1.add(year15);
    group0.add(year30);
    menu1.add(year30);
    menu1.addSeparator( );
    menu1.add(quitItem);
    // create a menu bar and use it in this JFrame
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(menu1);
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    FlowLayout flo = new FlowLayout(FlowLayout.LEFT,10,20);
    BorderLayout brd = new BorderLayout(5,5);
    pane = getContentPane();
    p1.setLayout(brd);
    p2.setLayout(flo);
    pane.setLayout(flo);
    pane.add(l);
    pane.add(p2);
    pane.add(p1);
    setJMenuBar(menuBar);
    }

    public void menuKeyTyped(MenuKeyEvent e){
    System.out.println("type");
    }

    public void menuKeyReleased(MenuKeyEvent e){
    System.out.println("release");
    }

    public void menuKeyPressed(MenuKeyEvent e){
    int key = e.getKeyCode();
    if (key!=e.VK_ENTER) {
    /*if (e.getSource() == year7){
    l.setText("Selected Term is 7 years.");
    }
    if (year15.isSelected()){
    l.setText("Selected Term is 15 years.");
    }
    if (year30.isSelected()){
    l.setText("Selected Term is 30 years.");
    }*/
    e.consume();
    }
    else
    System.out.println("press");
    }

    public void itemStateChanged(ItemEvent e) {
    if (e.getSource() == year7){
    l.setText("Selected Term is 7 years.");
    }
    if (e.getSource() == year15){
    l.setText("Selected Term is 15 years.");
    }
    if (e.getSource() == year30){
    l.setText("Selected Term is 30 years.");
    }}

    public static void main(String[] args){
    MenuEnterKey f= new MenuEnterKey();
    f.setVisible(true);
    }}


  2. Default Re: menuKeyTyped and menuKeyReleased methods do not work.

    Try this simplified one:
    ----------------------------------------------------
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;

    public class MenuEnterKey extends JFrame
    implements MenuKeyListener, ItemListener{

    JLabel l = new JLabel();
    JLabel a = new JLabel("Enter Loan Amount");
    JLabel pay = new JLabel("");

    ButtonGroup group0 = new ButtonGroup( );

    JRadioButtonMenuItem year7 = new JRadioButtonMenuItem("7 Years at
    5.35%");
    JRadioButtonMenuItem year15 = new JRadioButtonMenuItem("15 Years at
    5.5%");
    JRadioButtonMenuItem year30
    = new JRadioButtonMenuItem("30 Years at 5.75%",true);

    Container pane;

    public MenuEnterKey(){
    super("Loan Payment");
    setSize(300, 200);
    setLocation(200, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JMenuItem quitItem = new JMenuItem("Exit");

    year30.addMenuKeyListener(this);

    year7.addItemListener(this);
    year15.addItemListener(this);
    year30.addItemListener(this);

    JMenu menu1 = new JMenu("Select a Term");
    menu1.setMnemonic('S');
    year7.setMnemonic('7');
    year15.setMnemonic('1');
    year30.setMnemonic('3');

    group0.add(year7);
    menu1.add(year7);
    group0.add(year15);
    menu1.add(year15);
    group0.add(year30);
    menu1.add(year30);
    menu1.addSeparator( );
    menu1.add(quitItem);

    // create a menu bar and use it in this JFrame
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(menu1);

    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    FlowLayout flo = new FlowLayout(FlowLayout.LEFT,10,20);
    BorderLayout brd = new BorderLayout(5,5);
    pane = getContentPane();
    p1.setLayout(brd);
    p2.setLayout(flo);
    pane.setLayout(flo);
    pane.add(l);
    pane.add(p2);
    pane.add(p1);
    setJMenuBar(menuBar);
    }

    public void menuKeyTyped(MenuKeyEvent e){
    System.out.println("type " + e.getKeyText(e.getKeyCode()));
    }

    public void menuKeyReleased(MenuKeyEvent e){
    System.out.println("release " + e.getKeyText(e.getKeyCode()));
    }

    public void menuKeyPressed(MenuKeyEvent e){
    System.out.println("press " + e.getKeyText(e.getKeyCode()));
    }

    public void itemStateChanged(ItemEvent e) {
    if (e.getSource() == year7){
    l.setText("Selected Term is 7 years.");
    }
    else if (e.getSource() == year15){
    l.setText("Selected Term is 15 years.");
    }
    else if (e.getSource() == year30){
    l.setText("Selected Term is 30 years.");
    }
    }

    public static void main(String[] args){
    MenuEnterKey f= new MenuEnterKey();
    f.setVisible(true);
    }
    }
    --------------------------------------------------------------------


  3. Default Re: menuKeyTyped and menuKeyReleased methods do not work.

    Thanks a lot.

    Do you know why when I press the Enter key on one menu item, the other
    two menu items also receive the Enter key?

    It looks like the menuKeyPressed() method works with the Enter key and
    the space key and the menuKeyTyped() and released method do not work
    with these two keys. Why?


  4. Default Re: menuKeyTyped and menuKeyReleased methods do not work.

    According to the API documentation, ...typed()
    method should work only for keys having characters.
    [Enter], [F1] etc. do not have characters.

    > I press the Enter key on one menu item

    You press it on the menu, not on a particular menu item.


+ Reply to Thread

Similar Threads

  1. AJAX Page Methods Broken in IIS, Work with Built-in Web Server
    By Application Development in forum DOTNET
    Replies: 3
    Last Post: 08-10-2007, 01:10 PM
  2. Replies: 4
    Last Post: 06-11-2007, 04:41 PM
  3. [VW7.4.1] Browse changed methods in package does not work.
    By Application Development in forum Smalltalk
    Replies: 0
    Last Post: 10-25-2006, 06:19 PM
  4. Replies: 5
    Last Post: 05-24-2006, 09:24 AM
  5. Replies: 0
    Last Post: 04-19-2006, 06:52 PM