Mantenga presionada una tecla mientras hace clic en un JTextField en Java, la forma de obtener la clave?

StackOverflow https://stackoverflow.com/questions/4574708

Pregunta

Tengo un JTextField representa un día en una semana, como "Viernes", al hacer clic en él, quiero tener una opción como "primero de mes, día 3 de mes o el último del mes", por lo que llegó con dos opciones:

<1> Mantenga pulsado un número o letra, digamos "2" o "L", a continuación, haga clic en medios "Friday" segundo (o último) viernes de cada mes, en este caso, la forma de obtener el número, mientras clics del ratón en el JTextField?

<2> clic con el ratón derecho en el "Viernes" JTextField, desplegar un menú, ya sea con botones o casillas de verificación que me dejaron elegir, a continuación, cierre el menú y obtener el valor.

Mi código aspecto que presentan hasta el momento:

  private final JTextField[] dayHeadings=new JTextField[]{new JTextField("Su"),
                                                          new JTextField("Mo"),
                                                          new JTextField("Tu"),
                                                          new JTextField("We"),
                                                          new JTextField("Th"),
                                                          new JTextField("Fr"),
                                                          new JTextField("Sa")};
......

    for (int ii=0; ii < dayHeadings.length; ii++)
    {
      dayHeadings[ii].setEditable(false);
      dayHeadings[ii].setFocusable(false);
      dayHeadings[ii].addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent evt) { onHeadingClicked(evt); } });
      add(dayHeadings[ii],new AbsoluteConstraints(x,38,X_Cell_Size+1,Y_Cell_Size+1));
    }
......
  void onHeadingClicked(final java.awt.event.MouseEvent evt)
  {
    final javax.swing.JTextField fld=(javax.swing.JTextField) evt.getSource();

    ...
  }

Cómo hacer cualquiera de los anteriores, son factibles en Java?

¿Fue útil?

Solución

Opción 1:

No hay manera de hacer esto en un solo paso. Usted tendría que añadir un KeyListner para realizar un seguimiento cada vez que se pulsa una tecla y luego guardar el valor de carácter. Entonces usted tendría que añadir un MouseListener al oyente para eventos mousePressed. Cuando el evento se dispara mousePressed que tendría que comprobar que el personaje se guarda y luego hacer su procesamiento. Por lo tanto el oyente para implementar las interfaces KeyListener y MouseListener.

Opción 2:

Es necesario añadir un detector de ratón y espere el botón derecho del ratón, a continuación, mostrar un menú emergente.

creo que la opción 2 es más intuitivo y más fácil de hacer. Siempre es más fácil trabajar con una mano y después se ve obligado a utilizar las dos manos.

Otros consejos

getModifiers en realidad es que lo que necesitaba. una muestra para los modificadores se puede encontrar aquí

Otra, más perezoso manera de hacerlo sería utilizar getModifiers () en el evento de clic de ratón. Muestra qué teclas de modificación (Ctrl, Alt, Shift, etc), en su caso, se pulsa durante el clic del ratón. El uso de estos botones no es tan intuitivo como un menú desplegable o números en mi opinión abajo, pero podría funcionar.

Leer más aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top