有没有办法存储Java Swing中同时单击的每个标签的名称?

时间:2012-08-11 22:36:56

标签: java swing jlabel

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

显然你还需要考虑如果用户改变思路会发生什么,你会如何停止并重新开始搜索,但是如果没有任何实际的想法,你就不可能提出建议。

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

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

答案 1 :(得分: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);