0

![在此处输入图像描述][1]我创建了一个 java swing 应用程序,它检测标签点击并在链接列表中搜索与标签名称匹配的对象。

现在我已经实现了这个假设只有一个标签被点击。

但是,让我们说,如果用户一次单击 5 个标签,我想同时捕获所有 5 个标签以进行比较。

现在我想澄清一件事,标签是根据链表中的记录数动态生成的。例如,如果链表只有 5 个作者字段,则只创建 5 个标签。

4

2 回答 2

1

在不知道“如何”显示标签或“如何”捕获鼠标点击或“如何”搜索列表的情况下,我的次要建议是在点击之间添加“延迟”然后搜索,允许用户是时候进行选择了,假设您希望搜索实时发生(即,无需按下另一个按钮即可开始搜索)

显然,您还需要考虑如果用户改变主意会发生什么,您将如何停止和重新启动搜索,但是如果没有任何实际的想法,您是如何做到这一点的,就不可能提出建议。

基本上我会使用一个javax.swing.Timer设置为合理的延迟(比如 500 毫秒到一秒),当计时器触发时,它会开始搜索。

在标签的每次“点击”上,我只需重新启动计时器,插入一个新的延迟。

于 2012-08-11T22:43:45.750 回答
1

可能这就是你要找的...

final List<String> labelNames = new ArrayList<String>();
MouseListener listener = new MouseAdapter() {
  @Override
  public void mouseClicked(MouseEvent e) {
    if (e.getSource() instanceof JLabel){
      labelNames.add(((JLabel) e.getSource()).getText());
    }
  }
};
JLabel label1 = new JLabel();
label1.addMouseListener(listener);
JLabel label2 = new JLabel();
label1.addMouseListener(listener);
JLabel label3 = new JLabel();
label1.addMouseListener(listener);
于 2012-08-11T22:53:34.997 回答