我有一點問題。我不明白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給我我選擇的值。但也許這是一種方法,將從模型中調用,但在幕後?