Yev*_*ago 3 java swing jlist listselectionlistener
我有这个错误,填充JList后,我尝试检索所选项的值.但是当我这样做时,它会被调用两次.
这是我的代码:
public CaveAdventureUI(CaveGame game) {
initComponents();
playerCarryItemModel = new DefaultListModel();
caveCarryItemModel = new DefaultListModel();
this.caveGame = game;
this.world = game.getCaveWorld();
listSelectionModel = this.jListCaveCarryItems.getSelectionModel();
listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.listSelectionModel.addListSelectionListener( new SharedListSelectionHandler());
//for debug purpose,see the world grid in console
game.drawCaves();
//new JComboBox(Mood.values());
createGridQuarePanels();
//world.startGame(GameLevel.Beginner);
update();
}
private class SharedListSelectionHandler implements ListSelectionListener {
public void valueChanged(ListSelectionEvent listSelectionEvent) {
ListSelectionModel lsm = (ListSelectionModel)listSelectionEvent.getSource();
if (!lsm.isSelectionEmpty()) {
Occupant opt = mapOccupants.get(Integer.toString(jListCaveCarryItems.getSelectedIndex()));
System.out.println("selected index :" +jListCaveCarryItems.getSelectedIndex() +"[["+opt.getName()+"]]");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当我在jList:jListCaveCarryItems上进行选择时,它会触发SharedListSelectionHandler类.但是,当我单击JList时,它会打印出两次所选的值.
任何人都可以帮我搞清楚吗?
感谢和问候,
Rei*_*eus 10
在选择事件期间和选择事件之后的另一个选择ListSelectionEvents时调度2 JList.从如何编写列表选择监听器
如果用户仍在操作选择,则isAdjusting标志为true,如果用户已完成更改选择,则为false.
因此,请确保ListSelectionEvent不调整该值.
public void valueChanged( ListSelectionEvent listSelectionEvent) {
if ( !listSelectionEvent.getValueIsAdjusting() && !lsm.isSelectionEmpty()) {
Occupant opt = ...
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4313 次 |
| 最近记录: |