KeyListener ou KeyBinding JTable

1 resposta
java
Thomasbrazpinto

eu andei dando uma pesquisada em KeyListeners e KeyBindings para utiliza-los em JTables, mas simplesmente não consigo fazer funcionar, segue o código:

onde tb1 é minha JTable com meu próprio model definido

sei que não está funcionando, porque não entra nem no “system.out.println”

valeu galera!

KeyBindings:

tb1.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(
                                        "ENTER"),
                                        "check");
        tb1.getActionMap().put("check", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("eee");
		
            }
        });

KeyListener:

tb1.addKeyListener(new myKeyListener());
class myKeyListener extends KeyAdapter {

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println("eeeee");
            if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_0 || e.getKeyCode() == KeyEvent.VK_1 || e.getKeyCode() == KeyEvent.VK_2 || e.getKeyCode() == KeyEvent.VK_3 || e.getKeyCode() == KeyEvent.VK_4 || e.getKeyCode() == KeyEvent.VK_5 || e.getKeyCode() == KeyEvent.VK_6 || e.getKeyCode() == KeyEvent.VK_7 || e.getKeyCode() == KeyEvent.VK_8 || e.getKeyCode() == KeyEvent.VK_9) {
                DigCartaoPonto dcp = new DigCartaoPonto();
                boolean b = false;
                while (!b) {
                    int cols = tb1.getColumnCount();
                    int row = tb1.getSelectedRow(), col = tb1.getSelectedColumn();
                    boolean ent = false;
                    if (col % 2 != 0 && col < cols && col > 4) {
                        ent = true;
                    }
                    if (ent) {
                        String[] val = dcp.getVal((String) mCard.getValueAt(row, col), (String) mCard.getValueAt(row, col + 1));
                        mCard.setValueAt(val[0], row, col);
                        mCard.setValueAt(val[1], row, col + 1);
                    } else {
                        String[] val = dcp.getVal("--:--", (String) mCard.getValueAt(row, col));
                        mCard.setValueAt(val[1], row, col);
                    }

                }
            }
        }
    }

@Edit:
E o mouseListener também não:

tb1.addMouseListener(new MouseListener() {
            @Override
            public void mouseReleased(MouseEvent e) {
                row = tb1.getSelectedRow();
                col = tb1.getSelectedColumn();
            }

            @Override
            public void mouseClicked(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void mouseExited(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });

1 Resposta

Thomasbrazpinto

Consegui resolver, infelizmente o problema era que o Container.setVisible(true) estava em cima dos addKeyListener/MouseListener/keyBinding, quando coloquei para baixo desses métodos ele voltou a funcionar!

Criado 22 de abril de 2016
Ultima resposta 22 de abr. de 2016
Respostas 1
Participantes 1