【发布时间】:2016-10-11 04:51:20
【问题描述】:
我有一个小问题。我不明白 ListModel 和/或 ListSelectionModel 的目的。 我认为 Java Swing 中的 MVC 模式/UI 委托原则很重要。
例如: 我有一个简单的 JList 并且想要获得一个选定的值。所以我只需添加一个带有 valueChanged Methode 的 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 给了我我选择的值。但也许它是一个从模型调用但在幕后调用的方法?
【问题讨论】:
标签: java swing model-view-controller defaultlistmodel