Удерживая клавишу, нажимая на JTextField в Java, как получить ключ? - PullRequest
1 голос
/ 01 января 2011

У меня есть JTextField, представляющий день в неделе, такой как «Пятница», когда я нажимаю на него, я хочу иметь выбор, например, «1-е число, 3-е число или последнее число месяца», поэтому япредложили два варианта:

<1> Удерживая цифру или букву, скажем, «2» или «L», затем нажмите «Пятница» означает 2-ую (или последнюю) пятницу месяца, вв этом случае, как получить число, когда мышь щелкает мышью на JTextField?

<2> Щелкните правой кнопкой мыши на JTextField «пятница», откройте меню с кнопками или флажками, которые позволяют выбрать, затемзакройте меню и получите значение.

Мой код выглядит следующим образом:

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

    ...
  }

Как сделать что-либо из перечисленного выше, они выполнимы в Java?

Ответы [ 3 ]

1 голос
/ 07 мая 2013

getModifiers на самом деле это то, что мне нужно.образец для модификаторов можно найти здесь

1 голос
/ 01 января 2011

Вариант 1:

Невозможно сделать это за один шаг.Вам необходимо добавить KeyListner для отслеживания каждого нажатия клавиши, а затем сохранить значение символа.Затем вам нужно будет добавить MouseListener к слушателю событий mousePressed.При возникновении события mousePressed вам необходимо проверить, какой символ сохранен, а затем выполнить обработку.Поэтому ваш слушатель должен реализовать интерфейсы KeyListener и MouseListener.

Опция 2:

Вам необходимо добавить слушателя мыши и прослушать щелчок правой кнопкой мыши, а затем отобразить всплывающее меню.

Я думаю, что вариант 2 более интуитивно понятен и его легче выполнять.Работать одной рукой всегда легче, чем двумя руками.

0 голосов
/ 01 января 2011

Другой, более ленивый способ сделать это - использовать getModifiers () для события mouseclick.Он показывает, какие клавиши-модификаторы (Ctrl, Alt, Shift и т. Д.), Если таковые имеются, были нажаты во время щелчка мыши.Использование этих кнопок не так интуитивно понятно, как выпадающее меню или цифры, на мой взгляд, но может работать.

Подробнее здесь

...