gpt4 book ai didi

java - Java Swing 模型/MVC 的目的

转载 作者:行者123 更新时间:2023-11-29 04:44:38 25 4
gpt4 key购买 nike

我有个小问题。我不明白 ListModel 和/或 ListSelectionModel 的用途。我认为这对 Java Swing 中的 MVC 模式/UI 委托(delegate)原则很重要。

例如:我有一个简单的 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 为我提供了我选择的值。但也许它是一种从模型但在幕后调用的方法?

最佳答案

Default(ListModel) 用于添加您的模型数据。当数据被添加到模型时,它会自动刷新 Jlist。选择模型用于跟踪列表中的选择。

现在是 ListSelectionListener。当您想要选择事件的一些通知时,您可以实现这一点。如果您不需要通知,则不必使用。

假设我有一个有模型的 Jlist。而这个模型对应一个表单数据。因此,如果您想设计一个 UI,在单击列表时要将模型数据加载到表单中,您可以添加 ListSelectionListener。

list.getSelectedValue();

不管监听器是什么,都会给你选择的值(如果列表有一些选择)。

关于java - Java Swing 模型/MVC 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com