2015-11-17 73 views
0

可以说我有保存的地方的表。我想将实际位置发送到编辑对话框。JButton ActionListener和JTable

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {    
    @Override 
    public void valueChanged(ListSelectionEvent e) { 
     if (!e.getValueIsAdjusting()) { 
      Place p = model.getPlaceAtRow(table.getSelectedRow()); 
      btnEdit.addActionListener(ev -> { 
       dialog.showEdit(p); 
       System.out.println(p); 
      }); 
     } 
    } 
}); 

但问题是,地方都“不删除”从我的按钮和编辑对话框只显示第一选择的地方。下面是输出点击通过三个位置,然后点击两次btnEdit后:

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

任何提示如何让以前的地方开来btnEdit apreciated。

回答

0

我怀疑没有必要使用ListSelectionListener,因为按钮的动作侦听器可以使用当前选定的行。

btnEdit.addActionListener(ev -> { 
    Place p = model.getPlaceAtRow(table.getSelectedRow()); 
    dialog.showEdit(p); 
    System.out.println(p); 
}); 

这样,你只能添加一个动作侦听器的按钮一次,而每次的有一个选择。

+0

那么ListSelectionListener在那里,因为我做了另一件事情与选定的地方(如地图上显示),我从我的主要帖子中删除。但是我在ListSelectionListener之外添加了你的代码,并且它的工作没有问题。谢谢你的帮助。 – horca23