JTable enter key

后端 未结 2 544
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-30 09:12

I am developing an application using jTable for inventory management.

The action is, by typing the item code in a jTextField and by pressin

相关标签:
2条回答
  • 2020-11-30 10:01

    You can use Java 8 lambda functions:

    final String tustakmaad = "Solve";
    KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
            panel.getTblBelgetarihiliste().getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
                enter, tustakmaad);
            panel.getTblBelgetarihiliste().getActionMap().put(tustakmaad, new DelegateAction(
                ae -> eventMytable_enterkey()));
    

    and DelegateAction class should be like this:

    package com.ozpas.entegre.controller;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.AbstractAction;
    
    public class DelegateAction extends AbstractAction {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        ActionListener myaction = (ae) -> {
            System.out.println("empty action");
        };
    
        public DelegateAction(ActionListener customaction) {
            this.myaction = customaction;
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            myaction.actionPerformed(e);
        }
    
        public ActionListener getMyaction() {
            return myaction;
        }
    
        public void setMyaction(ActionListener myaction) {
            this.myaction = myaction;
        }
    
    }
    
    0 讨论(0)
  • 2020-11-30 10:04

    The default Key Binding for Enter is the selectNextRowCell action in the table's WHEN_ANCESTOR_OF_FOCUSED_COMPONENT input map. You can substitute your own action, as outlined below.

    private static final String solve = "Solve";
    KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
    table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter, solve);
    table.getActionMap().put(solve, new EnterAction());
    ...
    private class EnterAction extends AbstractAction {
    
        @Override
        public void actionPerformed(ActionEvent e) {
            ...
        }
    }
    

    See also Keyboard Bindings in Swing (mirrored at web.archive.org).

    Addendum: You can find more examples here, here and here; the last one is JTable specific.

    0 讨论(0)
提交回复
热议问题