获取事件源而不是编写它

时间:2013-11-16 07:03:25

标签: java swing jlist valuechangelistener

首先:我很抱歉问题名称,我找不到一个好名字。

我有以下听众

public void valueChanged(ListSelectionEvent arg0) {
        if(!(arg0.getValueIsAdjusting())){
            result.setText(result.getText()+arg0.getSource().getSelectedValue().toString());//I know it is wrong!
        }
}

我想说的是:是否有一种方法可以确定事件的来源并获取其价值?

它真的会有帮助,例如有15个列表!

还是我必须写一个15条件?

1 个答案:

答案 0 :(得分:3)

你快到了。调用arg0.getSource()并将其转换为JList,中提琴,你就在那里!类似的东西:

String selection = ((JList) arg0.getSource()).getSelectedValue().toString();
result.setText(result.getText() + selection);

请注意,我的美学家坚持将该参数重命名为更漂亮的东西。

public void valueChanged(ListSelectionEvent lsEvent) {
  if(!(lsEvent.getValueIsAdjusting())){
     JList list = (JList) lsEvent.getSource();
     Object selection = list.getSelectedValue(); // if not using generics
     if (selection != null) {
        String stringSelection = selection.toString();
        result.setText(result.getText() + stringSelection);
     }
  }
}