我有一点问题。我不明白ListModel和/或ListSelectionModel的目的。 我认为这对于Java Swing中的MVC模式/ UI委托原则非常重要。Java Swing中的模型/ MVC的用途
例如: 我有一个简单的JList并希望获得选定的值。所以我只需添加一个带有valueChanged方法的ListSelectionListener即可。
但是,我现在可以用(默认)模型或(默认)SelectionModel做什么? 或者模型可能在幕后行动?我认为您只能通过模型获取选定的数据,并使用此模型更改数据的值。 所以你需要一个模型,但你真的不实现一个自定义模型?
这里是我的代码:
String[] shoppingCart = {"Pen", "Paper", "Smartphone", "Cheese"};
JList list = new JList(shoppingCart);
c.add(list, BorderLayout.CENTER);
ListSelectionModel lsm = list.getSelectionModel();
ListModel lm = list.getModel();
System.out.println("lm: " + lm);
System.out.println("lsm: " + lsm);
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
//System.out.println(list.getSelectionModel().getValueIsAdjusting());
System.out.println("value changed " + list.getSelectedValue());
}
});
所以getSelectionModel给我我选择的值。但也许这是一种方法,将从模型中调用,但在幕后?