1

我有一个 JTextField 代表一周中的一天,例如“星期五”,当我点击它时,我想有一个选择,例如“月 1 日、月 3 日或月末”,所以我想出了两个选项:

<1> 按住一个数字或字母,比如说“2”或“L”,然后点击“Friday”表示每月的第二个(或最后一个)星期五,在这种情况下,如何在鼠标点击时获取数字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 中是否可行?

4

3 回答 3

2

getModifiers 实际上就是我所需要的。可以在 此处找到修饰符的示例

于 2013-05-07T06:05:16.377 回答
1

选项1:

没有办法一步完成。您需要添加一个 KeyListner 来跟踪每次按下键,然后保存字符值。然后你需要添加一个 MouseListener 来监听 mousePressed 事件。当 mousePressed 事件触发时,您需要检查保存了哪个字符,然后进行处理。因此,您的侦听器将同时实现 KeyListener 和 MouseListener 接口。

选项 2:

您需要添加鼠标侦听器并侦听鼠标右键单击,然后显示弹出菜单。

我认为选项 2 更直观,更容易完成。它总是更容易用一只手工作,然后被迫用两只手。

于 2011-01-01T17:00:29.953 回答
0

另一种更懒惰的方法是在 mouseclick 事件上使用 getModifiers() 。它显示在鼠标单击期间按下了哪些修改键(ctrl、alt、shift 等)(如果有)。在我看来,使用这些按钮不如下拉菜单或数字那么直观,但可以工作。

在这里阅读更多

于 2011-01-01T18:16:26.397 回答