J'ai une liste de Map.Entry<String,Integer>
que je suis en boucle, et pour chacun d'eux, en créant un JLabel
/JSpinner
représentant cette entrée particulière.Java/Swing: mettre à jour les données sur stateChange
Comment puis-je faire en sorte que lorsque le ChangeListener
se déclenche sur le JSpinner
, il met à jour cette entrée pour refléter la nouvelle valeur?
Mon code ressemble
for (Map.Entry<String,Integer> entry : graph.getData()) {
SpinnerNumberModel model = new SpinnerNumberModel(
entry.getValue(),(Integer)0,(Integer)100,(Integer)5);
JSpinner spinner = new JSpinner(model);
JLabel label = new JLabel(entry.getKey());
spinner.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
entry.setValue((Integer)((JSpinner)e.getSource()).getValue());
}
});
// more stuff
}
Toutefois, cela ne fonctionne pas, parce que l'entrée soit doit être définitive ou de niveau objet, et il est non plus.
Existe-t-il un moyen plus simple, comme le dataSource
de C# qui lie directement l'objet au cône? Ou comment puis-je faire ce travail?
Impossible de rendre l'entrée définitive? comme pour (final Map.Entry entrée: graph.getData()) ....? –