我一直在尝试使用 MVC 实现一个简单的 JList。基本上,显示 JList 并在其下添加一个按钮以删除项目。我想将 AbstractListModel 用于模型,因为稍后我想要的不仅仅是一个简单的 ArrayList 作为数据。
我无法以正确的 MVC 方式使用 JList。例如在视图中我创建了列表。但是这个列表需要模型(addModel(method),并添加到视图中。这看起来很奇怪,因为我认为在MVC中视图不知道模型。我也不知道我应该在控制器中放什么.
无论如何,如果有人能给我指导来实现这一点,那就太好了。
这是我开始的代码:
public class SimpleJlist extends JFrame
{
public static void main(String[] args)
{
Controller controller = new Controller();
View view = new View(controller);
Model model = new Model();
SimpleJlist jl = new SimpleJlist();
jl.setLayout(new FlowLayout());
jl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jl.add(view);
jl.setVisible(true);
jl.pack();
}
}
public class View extends JPanel implements ListDataListener, ActionListener
{
Controller controller;
JButton button;
JList list;
public View(Controller controller)
{
this.controller = controller;
button = new JButton("Delete");
/* Creation of the Jlist, but need the model. */
}
/* For the button */
public void actionPerformed(ActionEvent event) { }
/* For the list */
public void contentsChanged(ListDataEvent event) { }
public void intervalAdded(ListDataEvent event) { }
public void intervalRemoved(ListDataEvent event) { }
}
public class Model extends AbstractListModel
{
private ArrayList<String> names;
public Model()
{
names = new ArrayList<String>();
/* add names... */
}
public void deleteElement(int index) { names.remove(index); }
public String getElementAt(int index) { return names.get(index); }
public int getSize() { return names.size(); }
}
代码显然还远未完成,但这是我在想知道下一步该怎么做之前到达的地方......
控制器不在那里,因为我根本不知道该放什么。