2012-02-01 10 views
9

Estoy desarrollando una aplicación usando jTable para la gestión de inventario.JIntroducir clave

La acción es, escribiendo el código del artículo en un jTextField y pulsando Enter clave, los detalles de ese código debe venir a jTable. Y allí tengo que escribir la cantidad y presionar Ingrese para calcular la cantidad. Pero ahora dando el código del artículo los detalles vienen al jTable, y puedo escribir la cantidad, pero presionando Ingrese clave jTable el foco va a la siguiente fila y no se realiza ningún cálculo. Pero presionando de nuevo Ingrese la clave en el jTextField se calcula el último monto ingresado. No sé cómo resolver este problema ya que soy un principiante en Java. Estoy usando MySQL y Java en Netbeans.

estoy dando ese código de abajo ..

gracias ..

jTable1.editCellAt(serialNumber, 2); 
jTable1.getCellSelectionEnabled(); 

value1 = new Double(jTable1.getValueAt(serialNumber, 2).toString()); 
value = new Double(jTable1.getValueAt(serialNumber, 3).toString()); 
double result = value1 * value; 

jTable1.setValueAt(result, serialNumber, 4); 

Respuesta

24

El valor predeterminado para Key BindingIntroduzca es la acción selectNextRowCell en el mapa WHEN_ANCESTOR_OF_FOCUSED_COMPONENT de entrada de la tabla. Puede sustituir su propia acción, como se describe a continuación.

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) { 
     ... 
    } 
} 

Ver también Keyboard Bindings in Swing (reflejado en web.archive.org).

Adición: Puede encontrar más ejemplos here, here y here; el último es JTable específico.

+0

Gracias por la reply..But I no sabe mucho acerca clave binding..If no te importa ¿Me podría decir dónde o cómo tengo que añadir este código paso a step..i estoy totalmente confundido. – Luna

+0

Sí, es un poco confuso al principio. Me pareció útil leer los tutoriales y probar algunos ejemplos; más arriba. – trashgod

+0

ok ... gracias por su respuesta ... lo intentaré ... – Luna

0

Puede usar la función java 8 lambda.

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())); 

y delegateaction class debería ser como a continuación.

paquete 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; 
    } 

} 
Cuestiones relacionadas